@@ -93,32 +93,31 @@ async def fetch_all(
93
93
self , query : typing .Union [ClauseElement , str ], values : dict = None
94
94
) -> typing .List [RowProxy ]:
95
95
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 )
97
97
98
98
async def fetch_one (
99
99
self , query : typing .Union [ClauseElement , str ], values : dict = None
100
100
) -> RowProxy :
101
101
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 )
103
103
104
104
async def execute (
105
105
self , query : typing .Union [ClauseElement , str ], values : dict = None
106
106
) -> typing .Any :
107
107
async with self .connection () as connection :
108
- return await connection .execute (self . _build_query ( query , values ) )
108
+ return await connection .execute (query , values )
109
109
110
110
async def execute_many (
111
111
self , query : typing .Union [ClauseElement , str ], values : list
112
112
) -> None :
113
113
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 )
116
115
117
116
async def iterate (
118
117
self , query : typing .Union [ClauseElement , str ], values : dict = None
119
118
) -> typing .AsyncGenerator [RowProxy , None ]:
120
119
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 ):
122
121
yield record
123
122
124
123
def connection (self ) -> "Connection" :
@@ -135,19 +134,6 @@ def connection(self) -> "Connection":
135
134
def transaction (self , * , force_rollback : bool = False ) -> "Transaction" :
136
135
return self .connection ().transaction (force_rollback = force_rollback )
137
136
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
-
151
137
152
138
class Connection :
153
139
def __init__ (self , backend : DatabaseBackend ) -> None :
@@ -179,22 +165,31 @@ async def __aexit__(
179
165
if self ._connection_counter == 0 :
180
166
await self ._connection .release ()
181
167
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 ))
184
172
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 ))
187
177
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 ))
190
182
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 ]
192
187
await self ._connection .execute_many (queries )
193
188
194
189
async def iterate (
195
- self , query : ClauseElement
190
+ self , query : typing . Union [ ClauseElement , str ], values : dict = None
196
191
) -> 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 ) ):
198
193
yield record
199
194
200
195
def transaction (self , * , force_rollback : bool = False ) -> "Transaction" :
@@ -204,6 +199,19 @@ def transaction(self, *, force_rollback: bool = False) -> "Transaction":
204
199
def raw_connection (self ) -> typing .Any :
205
200
return self ._connection .raw_connection
206
201
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
+
207
215
208
216
class Transaction :
209
217
def __init__ (self , connection : Connection , force_rollback : bool ) -> None :
0 commit comments