|
5 | 5 | from sqlalchemy.future import Engine, create_engine |
6 | 6 | from sqlalchemy.orm import sessionmaker, Session |
7 | 7 | from sqlalchemy.sql import Executable, Select |
8 | | -from sqlalchemy_database._abc_async_database import AbcAsyncDatabase |
9 | 8 | from typing_extensions import Concatenate, ParamSpec |
10 | 9 |
|
| 10 | +from sqlalchemy_database._abc_async_database import AbcAsyncDatabase |
| 11 | + |
11 | 12 | _P = ParamSpec("_P") |
12 | 13 | _T = TypeVar("_T") |
13 | 14 | _R = TypeVar("_R") |
@@ -53,8 +54,7 @@ async def execute( |
53 | 54 | else: |
54 | 55 | maker = self.engine.connect |
55 | 56 | async with maker() as conn: |
56 | | - |
57 | | - result = await conn.execute(statement, params, execution_options, **kw) |
| 57 | + result = await conn.execute(statement, params, execution_options, **kw) # type:ignore |
58 | 58 | if on_close_pre: |
59 | 59 | result = on_close_pre(result) |
60 | 60 | if commit and not isinstance(statement, Select): |
@@ -122,6 +122,11 @@ async def delete(self, instance: Any) -> None: |
122 | 122 | async with session.begin(): |
123 | 123 | await session.delete(instance) |
124 | 124 |
|
| 125 | + async def save(self, *instances: Any) -> None: |
| 126 | + async with self.session_maker() as session: |
| 127 | + async with session.begin(): |
| 128 | + session.add_all(instances) |
| 129 | + |
125 | 130 | async def run_sync( |
126 | 131 | self, |
127 | 132 | fn: Callable[[Concatenate[Union[Session, Connection], _P]], _T], |
@@ -246,6 +251,11 @@ def delete(self, instance: Any) -> None: |
246 | 251 | with session.begin(): |
247 | 252 | session.delete(instance) |
248 | 253 |
|
| 254 | + def save(self, *instances: Any) -> None: |
| 255 | + with self.session_maker() as session: |
| 256 | + with session.begin(): |
| 257 | + session.add_all(instances) |
| 258 | + |
249 | 259 | def run_sync( |
250 | 260 | self, |
251 | 261 | fn: Callable[[Concatenate[Union[Session, Connection], _P]], _T], |
|
0 commit comments