Improve type annotations for `execute_values`. (#12311)
parent
a4643a685c
commit
89f11f8c6f
|
@ -0,0 +1 @@
|
||||||
|
Improve type annotations for `execute_values`.
|
|
@ -290,11 +290,15 @@ class LoggingTransaction:
|
||||||
if isinstance(self.database_engine, PostgresEngine):
|
if isinstance(self.database_engine, PostgresEngine):
|
||||||
from psycopg2.extras import execute_batch
|
from psycopg2.extras import execute_batch
|
||||||
|
|
||||||
self._do_execute(lambda *x: execute_batch(self.txn, *x), sql, args)
|
self._do_execute(
|
||||||
|
lambda the_sql: execute_batch(self.txn, the_sql, args), sql
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self.executemany(sql, args)
|
self.executemany(sql, args)
|
||||||
|
|
||||||
def execute_values(self, sql: str, *args: Any, fetch: bool = True) -> List[Tuple]:
|
def execute_values(
|
||||||
|
self, sql: str, values: Iterable[Iterable[Any]], fetch: bool = True
|
||||||
|
) -> List[Tuple]:
|
||||||
"""Corresponds to psycopg2.extras.execute_values. Only available when
|
"""Corresponds to psycopg2.extras.execute_values. Only available when
|
||||||
using postgres.
|
using postgres.
|
||||||
|
|
||||||
|
@ -305,15 +309,8 @@ class LoggingTransaction:
|
||||||
from psycopg2.extras import execute_values
|
from psycopg2.extras import execute_values
|
||||||
|
|
||||||
return self._do_execute(
|
return self._do_execute(
|
||||||
# Type ignore: mypy is unhappy because if `x` is a 5-tuple, then there will
|
lambda the_sql: execute_values(self.txn, the_sql, values, fetch=fetch),
|
||||||
# be two values for `fetch`: one given positionally, and another given
|
|
||||||
# as a keyword argument. We might be able to fix this by
|
|
||||||
# - propagating the signature of psycopg2.extras.execute_values to this
|
|
||||||
# function, or
|
|
||||||
# - changing `*args: Any` to `values: T` for some appropriate T.
|
|
||||||
lambda *x: execute_values(self.txn, *x, fetch=fetch), # type: ignore[misc]
|
|
||||||
sql,
|
sql,
|
||||||
*args,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
def execute(self, sql: str, *args: Any) -> None:
|
def execute(self, sql: str, *args: Any) -> None:
|
||||||
|
|
Loading…
Reference in New Issue