From f898bb1c37201cd7a6b4ae7de6da02aedf54464e Mon Sep 17 00:00:00 2001 From: John Newbery Date: Fri, 25 Apr 2025 10:49:10 +0100 Subject: [PATCH 1/2] Allow session.exec(delete(Table)) to delete all rows from a table --- sqlmodel/orm/session.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/sqlmodel/orm/session.py b/sqlmodel/orm/session.py index b60875095b..d077fda34a 100644 --- a/sqlmodel/orm/session.py +++ b/sqlmodel/orm/session.py @@ -17,6 +17,7 @@ from sqlalchemy.orm._typing import OrmExecuteOptionsParameter from sqlalchemy.sql._typing import _ColumnsClauseArgument from sqlalchemy.sql.base import Executable as _Executable +from sqlalchemy.sql import Delete from sqlmodel.sql.base import Executable from sqlmodel.sql.expression import Select, SelectOfScalar from typing_extensions import deprecated @@ -49,12 +50,26 @@ def exec( _add_event: Optional[Any] = None, ) -> ScalarResult[_TSelectParam]: ... + @overload + def exec( + self, + statement: Delete[_TSelectParam], + *, + params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, + execution_options: Mapping[str, Any] = util.EMPTY_DICT, + bind_arguments: Optional[Dict[str, Any]] = None, + _parent_execute_state: Optional[Any] = None, + _add_event: Optional[Any] = None, + ) -> None: + ... + def exec( self, statement: Union[ Select[_TSelectParam], SelectOfScalar[_TSelectParam], Executable[_TSelectParam], + Delete[_TSelectParam], ], *, params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, @@ -62,7 +77,7 @@ def exec( bind_arguments: Optional[Dict[str, Any]] = None, _parent_execute_state: Optional[Any] = None, _add_event: Optional[Any] = None, - ) -> Union[TupleResult[_TSelectParam], ScalarResult[_TSelectParam]]: + ) -> Union[TupleResult[_TSelectParam], ScalarResult[_TSelectParam], None]: results = super().execute( statement, params=params, From 05fa37d46ef0268b4f92fff0a5f0357b9d565855 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 09:54:44 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20for?= =?UTF-8?q?mat=20from=20pre-commit.com=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqlmodel/orm/session.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sqlmodel/orm/session.py b/sqlmodel/orm/session.py index d077fda34a..f39aa2d954 100644 --- a/sqlmodel/orm/session.py +++ b/sqlmodel/orm/session.py @@ -15,9 +15,9 @@ from sqlalchemy.orm import Query as _Query from sqlalchemy.orm import Session as _Session from sqlalchemy.orm._typing import OrmExecuteOptionsParameter +from sqlalchemy.sql import Delete from sqlalchemy.sql._typing import _ColumnsClauseArgument from sqlalchemy.sql.base import Executable as _Executable -from sqlalchemy.sql import Delete from sqlmodel.sql.base import Executable from sqlmodel.sql.expression import Select, SelectOfScalar from typing_extensions import deprecated @@ -60,8 +60,7 @@ def exec( bind_arguments: Optional[Dict[str, Any]] = None, _parent_execute_state: Optional[Any] = None, _add_event: Optional[Any] = None, - ) -> None: - ... + ) -> None: ... def exec( self,