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

Commit 82040d6

Browse files
committed
Moved query building logic in Connection
1 parent db4da0f commit 82040d6

File tree

1 file changed

+36
-28
lines changed

1 file changed

+36
-28
lines changed

databases/core.py

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -93,32 +93,31 @@ async def fetch_all(
9393
self, query: typing.Union[ClauseElement, str], values: dict = None
9494
) -> typing.List[RowProxy]:
9595
async with self.connection() as connection:
96-
return await connection.fetch_all(query=self._build_query(query, values))
96+
return await connection.fetch_all(query, values)
9797

9898
async def fetch_one(
9999
self, query: typing.Union[ClauseElement, str], values: dict = None
100100
) -> RowProxy:
101101
async with self.connection() as connection:
102-
return await connection.fetch_one(query=self._build_query(query, values))
102+
return await connection.fetch_one(query, values)
103103

104104
async def execute(
105105
self, query: typing.Union[ClauseElement, str], values: dict = None
106106
) -> typing.Any:
107107
async with self.connection() as connection:
108-
return await connection.execute(self._build_query(query, values))
108+
return await connection.execute(query, values)
109109

110110
async def execute_many(
111111
self, query: typing.Union[ClauseElement, str], values: list
112112
) -> None:
113113
async with self.connection() as connection:
114-
queries = [self._build_query(query, values_set) for values_set in values]
115-
return await connection.execute_many(queries)
114+
return await connection.execute_many(query, values)
116115

117116
async def iterate(
118117
self, query: typing.Union[ClauseElement, str], values: dict = None
119118
) -> typing.AsyncGenerator[RowProxy, None]:
120119
async with self.connection() as connection:
121-
async for record in connection.iterate(self._build_query(query, values)):
120+
async for record in connection.iterate(query, values):
122121
yield record
123122

124123
def connection(self) -> "Connection":
@@ -135,19 +134,6 @@ def connection(self) -> "Connection":
135134
def transaction(self, *, force_rollback: bool = False) -> "Transaction":
136135
return self.connection().transaction(force_rollback=force_rollback)
137136

138-
@staticmethod
139-
def _build_query(
140-
query: typing.Union[ClauseElement, str], values: dict = None
141-
) -> ClauseElement:
142-
if isinstance(query, str):
143-
query = text(query)
144-
145-
return query.bindparams(**values) if values is not None else query
146-
elif values:
147-
return query.values(**values)
148-
149-
return query
150-
151137

152138
class Connection:
153139
def __init__(self, backend: DatabaseBackend) -> None:
@@ -179,22 +165,31 @@ async def __aexit__(
179165
if self._connection_counter == 0:
180166
await self._connection.release()
181167

182-
async def fetch_all(self, query: ClauseElement) -> typing.Any:
183-
return await self._connection.fetch_all(query=query)
168+
async def fetch_all(
169+
self, query: typing.Union[ClauseElement, str], values: dict = None
170+
) -> typing.Any:
171+
return await self._connection.fetch_all(self._build_query(query, values))
184172

185-
async def fetch_one(self, query: ClauseElement) -> typing.Any:
186-
return await self._connection.fetch_one(query=query)
173+
async def fetch_one(
174+
self, query: typing.Union[ClauseElement, str], values: dict = None
175+
) -> typing.Any:
176+
return await self._connection.fetch_one(self._build_query(query, values))
187177

188-
async def execute(self, query: ClauseElement) -> typing.Any:
189-
return await self._connection.execute(query)
178+
async def execute(
179+
self, query: typing.Union[ClauseElement, str], values: dict = None
180+
) -> typing.Any:
181+
return await self._connection.execute(self._build_query(query, values))
190182

191-
async def execute_many(self, queries: typing.List[ClauseElement]) -> None:
183+
async def execute_many(
184+
self, query: typing.Union[ClauseElement, str], values: list
185+
) -> None:
186+
queries = [self._build_query(query, values_set) for values_set in values]
192187
await self._connection.execute_many(queries)
193188

194189
async def iterate(
195-
self, query: ClauseElement
190+
self, query: typing.Union[ClauseElement, str], values: dict = None
196191
) -> typing.AsyncGenerator[typing.Any, None]:
197-
async for record in self._connection.iterate(query):
192+
async for record in self._connection.iterate(self._build_query(query, values)):
198193
yield record
199194

200195
def transaction(self, *, force_rollback: bool = False) -> "Transaction":
@@ -204,6 +199,19 @@ def transaction(self, *, force_rollback: bool = False) -> "Transaction":
204199
def raw_connection(self) -> typing.Any:
205200
return self._connection.raw_connection
206201

202+
@staticmethod
203+
def _build_query(
204+
query: typing.Union[ClauseElement, str], values: dict = None
205+
) -> ClauseElement:
206+
if isinstance(query, str):
207+
query = text(query)
208+
209+
return query.bindparams(**values) if values is not None else query
210+
elif values:
211+
return query.values(**values)
212+
213+
return query
214+
207215

208216
class Transaction:
209217
def __init__(self, connection: Connection, force_rollback: bool) -> None:

0 commit comments

Comments
 (0)