Skip to content
This repository was archived by the owner on Aug 19, 2025. It is now read-only.

Commit d7ff8e8

Browse files
author
ansipunk
committed
S01E04
1 parent 9d78221 commit d7ff8e8

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

databases/backends/psycopg.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import psycopg
44
import psycopg_pool
55
from sqlalchemy.engine.interfaces import Dialect
6+
from sqlalchemy.dialects.postgresql.psycopg import PGDialect_psycopg
67
from sqlalchemy.sql import ClauseElement
78

89
from databases.backends.common.records import Record, create_column_maps
9-
from databases.backends.dialects.psycopg import compile_query, get_dialect
1010
from databases.core import DatabaseURL
1111
from databases.interfaces import (
1212
ConnectionBackend,
@@ -29,7 +29,7 @@ def __init__(
2929
) -> None:
3030
self._database_url = DatabaseURL(database_url)
3131
self._options = options
32-
self._dialect = get_dialect()
32+
self._dialect = PGDialect_psycopg()
3333
self._pool = None
3434

3535
async def connect(self) -> None:
@@ -86,7 +86,7 @@ async def fetch_all(self, query: ClauseElement) -> typing.List[RecordInterface]:
8686
if self._connection is None:
8787
raise RuntimeError("Connection is not acquired")
8888

89-
query_str, args, result_columns = compile_query(query, self._dialect)
89+
query_str, args, result_columns = self._compile(query)
9090

9191
async with self._connection.cursor() as cursor:
9292
await cursor.execute(query_str, args)
@@ -99,7 +99,7 @@ async def fetch_one(self, query: ClauseElement) -> typing.Optional[RecordInterfa
9999
if self._connection is None:
100100
raise RuntimeError("Connection is not acquired")
101101

102-
query_str, args, result_columns = compile_query(query, self._dialect)
102+
query_str, args, result_columns = self._compile(query)
103103

104104
async with self._connection.cursor() as cursor:
105105
await cursor.execute(query_str, args)
@@ -125,7 +125,7 @@ async def execute(self, query: ClauseElement) -> typing.Any:
125125
if self._connection is None:
126126
raise RuntimeError("Connection is not acquired")
127127

128-
query_str, args, _ = compile_query(query, self._dialect)
128+
query_str, args, _ = self._compile(query)
129129

130130
async with self._connection.cursor() as cursor:
131131
await cursor.execute(query_str, args)
@@ -141,7 +141,7 @@ async def iterate(
141141
if self._connection is None:
142142
raise RuntimeError("Connection is not acquired")
143143

144-
query_str, args, result_columns = compile_query(query, self._dialect)
144+
query_str, args, result_columns = self._compile(query)
145145
column_maps = create_column_maps(result_columns)
146146

147147
async with self._connection.cursor() as cursor:
@@ -164,6 +164,17 @@ def raw_connection(self) -> typing.Any:
164164
raise RuntimeError("Connection is not acquired")
165165
return self._connection
166166

167+
def _compile(
168+
self, query: ClauseElement,
169+
) -> typing.Tuple[str, typing.Mapping[str, typing.Any], tuple]:
170+
compiled = query.compile(dialect=self._dialect)
171+
172+
compiled_query = compiled.string
173+
params = compiled.params
174+
result_map = compiled._result_columns
175+
176+
return compiled_query, params, result_map
177+
167178

168179
class PsycopgTransaction(TransactionBackend):
169180
_connecttion: PsycopgConnection

tests/test_databases.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,7 @@ async def test_queries_with_expose_backend_connection(database_url):
13381338
"mysql+asyncmy",
13391339
"mysql+aiomysql",
13401340
"postgresql+aiopg",
1341+
"postgresql+psycopg",
13411342
]:
13421343
insert_query = "INSERT INTO notes (text, completed) VALUES (%s, %s)"
13431344
else:

0 commit comments

Comments
 (0)