--- /dev/null
+.. change::
+ :tags: bug, typing
+
+ Fixed bug where the :meth:`_engine.Connection.scalars` method was not typed
+ as allowing a multiple-parameters list, which is now supported using
+ insertmanyvalues operations.
def scalars(
self,
statement: TypedReturnsRows[Tuple[_T]],
- parameters: Optional[_CoreSingleExecuteParams] = None,
+ parameters: Optional[_CoreAnyExecuteParams] = None,
*,
execution_options: Optional[CoreExecuteOptionsParameter] = None,
) -> ScalarResult[_T]:
def scalars(
self,
statement: Executable,
- parameters: Optional[_CoreSingleExecuteParams] = None,
+ parameters: Optional[_CoreAnyExecuteParams] = None,
*,
execution_options: Optional[CoreExecuteOptionsParameter] = None,
) -> ScalarResult[Any]:
def scalars(
self,
statement: Executable,
- parameters: Optional[_CoreSingleExecuteParams] = None,
+ parameters: Optional[_CoreAnyExecuteParams] = None,
*,
execution_options: Optional[CoreExecuteOptionsParameter] = None,
) -> ScalarResult[Any]:
async def scalars(
self,
statement: TypedReturnsRows[Tuple[_T]],
- parameters: Optional[_CoreSingleExecuteParams] = None,
+ parameters: Optional[_CoreAnyExecuteParams] = None,
*,
execution_options: Optional[CoreExecuteOptionsParameter] = None,
) -> ScalarResult[_T]:
async def scalars(
self,
statement: Executable,
- parameters: Optional[_CoreSingleExecuteParams] = None,
+ parameters: Optional[_CoreAnyExecuteParams] = None,
*,
execution_options: Optional[CoreExecuteOptionsParameter] = None,
) -> ScalarResult[Any]:
async def scalars(
self,
statement: Executable,
- parameters: Optional[_CoreSingleExecuteParams] = None,
+ parameters: Optional[_CoreAnyExecuteParams] = None,
*,
execution_options: Optional[CoreExecuteOptionsParameter] = None,
) -> ScalarResult[Any]:
from sqlalchemy import Column
from sqlalchemy import column
from sqlalchemy import create_engine
+from sqlalchemy import insert
from sqlalchemy import Integer
from sqlalchemy import select
from sqlalchemy import table
reveal_type(r5)
+def t_result_insertmanyvalues_scalars() -> None:
+ stmt = insert(User).returning(User.id)
+
+ uids1 = connection.scalars(
+ stmt,
+ [
+ {"name": "n1"},
+ {"name": "n2"},
+ {"name": "n3"},
+ ],
+ ).all()
+
+ # EXPECTED_TYPE: Sequence[int]
+ reveal_type(uids1)
+
+ uids2 = (
+ connection.execute(
+ stmt,
+ [
+ {"name": "n1"},
+ {"name": "n2"},
+ {"name": "n3"},
+ ],
+ )
+ .scalars()
+ .all()
+ )
+
+ # EXPECTED_TYPE: Sequence[int]
+ reveal_type(uids2)
+
+
+async def t_async_result_insertmanyvalues_scalars() -> None:
+ stmt = insert(User).returning(User.id)
+
+ uids1 = (
+ await async_connection.scalars(
+ stmt,
+ [
+ {"name": "n1"},
+ {"name": "n2"},
+ {"name": "n3"},
+ ],
+ )
+ ).all()
+
+ # EXPECTED_TYPE: Sequence[int]
+ reveal_type(uids1)
+
+ uids2 = (
+ (
+ await async_connection.execute(
+ stmt,
+ [
+ {"name": "n1"},
+ {"name": "n2"},
+ {"name": "n3"},
+ ],
+ )
+ )
+ .scalars()
+ .all()
+ )
+
+ # EXPECTED_TYPE: Sequence[int]
+ reveal_type(uids2)
+
+
def t_connection_execute_multi_row_t() -> None:
result = connection.execute(multi_stmt)