|
10 | 10 | ) |
11 | 11 |
|
12 | 12 | from sqlalchemy import util |
| 13 | +from sqlalchemy.engine.cursor import CursorResult |
13 | 14 | from sqlalchemy.engine.interfaces import _CoreAnyExecuteParams |
14 | 15 | from sqlalchemy.engine.result import Result, ScalarResult, TupleResult |
15 | 16 | from sqlalchemy.orm import Query as _Query |
16 | 17 | from sqlalchemy.orm import Session as _Session |
17 | 18 | from sqlalchemy.orm._typing import OrmExecuteOptionsParameter |
18 | 19 | from sqlalchemy.sql._typing import _ColumnsClauseArgument |
19 | 20 | from sqlalchemy.sql.base import Executable as _Executable |
| 21 | +from sqlalchemy.sql.dml import UpdateBase |
20 | 22 | from sqlmodel.sql.base import Executable |
21 | 23 | from sqlmodel.sql.expression import Select, SelectOfScalar |
22 | 24 | from typing_extensions import deprecated |
@@ -49,20 +51,35 @@ def exec( |
49 | 51 | _add_event: Optional[Any] = None, |
50 | 52 | ) -> ScalarResult[_TSelectParam]: ... |
51 | 53 |
|
| 54 | + @overload |
| 55 | + def exec( |
| 56 | + self, |
| 57 | + statement: UpdateBase, |
| 58 | + *, |
| 59 | + params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, |
| 60 | + execution_options: Mapping[str, Any] = util.EMPTY_DICT, |
| 61 | + bind_arguments: Optional[Dict[str, Any]] = None, |
| 62 | + _parent_execute_state: Optional[Any] = None, |
| 63 | + _add_event: Optional[Any] = None, |
| 64 | + ) -> CursorResult[Any]: ... |
| 65 | + |
52 | 66 | def exec( |
53 | 67 | self, |
54 | 68 | statement: Union[ |
55 | 69 | Select[_TSelectParam], |
56 | 70 | SelectOfScalar[_TSelectParam], |
57 | 71 | Executable[_TSelectParam], |
| 72 | + UpdateBase, |
58 | 73 | ], |
59 | 74 | *, |
60 | 75 | params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, |
61 | 76 | execution_options: Mapping[str, Any] = util.EMPTY_DICT, |
62 | 77 | bind_arguments: Optional[Dict[str, Any]] = None, |
63 | 78 | _parent_execute_state: Optional[Any] = None, |
64 | 79 | _add_event: Optional[Any] = None, |
65 | | - ) -> Union[TupleResult[_TSelectParam], ScalarResult[_TSelectParam]]: |
| 80 | + ) -> Union[ |
| 81 | + TupleResult[_TSelectParam], ScalarResult[_TSelectParam], CursorResult[Any] |
| 82 | + ]: |
66 | 83 | results = super().execute( |
67 | 84 | statement, |
68 | 85 | params=params, |
|
0 commit comments