lesscode-database 0.0.12__py3-none-any.whl → 0.0.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of lesscode-database might be problematic. Click here for more details.
- lesscode_database/ds_helper.py +131 -17
- lesscode_database/orm/orm_exec.py +42 -16
- {lesscode_database-0.0.12.dist-info → lesscode_database-0.0.13.dist-info}/METADATA +1 -1
- {lesscode_database-0.0.12.dist-info → lesscode_database-0.0.13.dist-info}/RECORD +6 -6
- {lesscode_database-0.0.12.dist-info → lesscode_database-0.0.13.dist-info}/WHEEL +0 -0
- {lesscode_database-0.0.12.dist-info → lesscode_database-0.0.13.dist-info}/licenses/LICENSE +0 -0
lesscode_database/ds_helper.py
CHANGED
|
@@ -136,11 +136,13 @@ class DsHelper:
|
|
|
136
136
|
raise e
|
|
137
137
|
return res
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
def exec_(self,sql_type:str,sql):
|
|
139
|
+
def exec_(self, sql_type: str, sql):
|
|
141
140
|
if sql_type not in ["all", "first", "delete", "update", "insert"]:
|
|
142
141
|
raise Exception(f"sql_type must be all,first,delete,update,insert")
|
|
143
|
-
|
|
142
|
+
connect_params = self.connect_info.params or {}
|
|
143
|
+
creator_type = connect_params.get("creator_type") or "clickhouse_driver"
|
|
144
|
+
if self.connect_info.db_type in ["mysql", "doris", "ocean_base", "tidb", "sqlite3", "dm"] or (
|
|
145
|
+
self.connect_info.db_type == "clickhouse" and creator_type == "clickhouse_driver"):
|
|
144
146
|
if sql_type == "all":
|
|
145
147
|
with self.pool.dedicated_connection() as conn:
|
|
146
148
|
conn.ping(reconnect=True)
|
|
@@ -171,23 +173,92 @@ class DsHelper:
|
|
|
171
173
|
with self.pool.dedicated_connection() as conn:
|
|
172
174
|
conn.ping(reconnect=True)
|
|
173
175
|
with conn.cursor() as cursor:
|
|
174
|
-
rs= cursor.execute(sql)
|
|
176
|
+
rs = cursor.execute(sql)
|
|
175
177
|
return rs
|
|
176
178
|
|
|
177
179
|
|
|
178
|
-
elif self.connect_info.db_type
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
elif self.connect_info.db_type in ["mssql", "oracle"]:
|
|
181
|
+
if sql_type == "all":
|
|
182
|
+
cursor = self.pool.cursor()
|
|
183
|
+
cursor.execute(sql)
|
|
184
|
+
rs = cursor.fetchall()
|
|
185
|
+
return rs
|
|
186
|
+
elif sql_type == "first":
|
|
187
|
+
cursor = self.pool.cursor()
|
|
188
|
+
cursor.execute(sql)
|
|
189
|
+
rs = cursor.fetchone()
|
|
190
|
+
return rs
|
|
191
|
+
elif sql_type == "delete":
|
|
192
|
+
cursor = self.pool.cursor()
|
|
193
|
+
rs = cursor.execute(sql)
|
|
194
|
+
return rs
|
|
195
|
+
elif sql_type == "update":
|
|
196
|
+
cursor = self.pool.cursor()
|
|
197
|
+
rs = cursor.execute(sql)
|
|
198
|
+
return rs
|
|
199
|
+
else:
|
|
200
|
+
cursor = self.pool.cursor()
|
|
201
|
+
rs = cursor.execute(sql)
|
|
202
|
+
return rs
|
|
203
|
+
elif self.connect_info.db_type in ["postgresql"]:
|
|
204
|
+
if sql_type == "all":
|
|
205
|
+
with self.pool.connection() as conn:
|
|
206
|
+
with conn.cursor() as cursor:
|
|
207
|
+
cursor.execute(sql)
|
|
208
|
+
rs = cursor.fetchall()
|
|
209
|
+
return rs
|
|
210
|
+
elif sql_type == "first":
|
|
211
|
+
with self.pool.connection() as conn:
|
|
212
|
+
with conn.cursor() as cursor:
|
|
213
|
+
cursor.execute(sql)
|
|
214
|
+
rs = cursor.fetchone()
|
|
215
|
+
return rs
|
|
216
|
+
elif sql_type == "delete":
|
|
217
|
+
with self.pool.connection() as conn:
|
|
218
|
+
with conn.cursor() as cursor:
|
|
219
|
+
rs = cursor.execute(sql)
|
|
220
|
+
return rs
|
|
221
|
+
elif sql_type == "update":
|
|
222
|
+
with self.pool.connection() as conn:
|
|
223
|
+
with conn.cursor() as cursor:
|
|
224
|
+
rs = cursor.execute(sql)
|
|
225
|
+
return rs
|
|
226
|
+
else:
|
|
227
|
+
with self.pool.connection() as conn:
|
|
228
|
+
with conn.cursor() as cursor:
|
|
229
|
+
rs = cursor.execute(sql)
|
|
230
|
+
return rs
|
|
231
|
+
elif self.connect_info.db_type == "clickhouse" and creator_type == "clickhouse_connect":
|
|
232
|
+
if sql_type == "all":
|
|
233
|
+
result = self.pool.query(sql).result_rows
|
|
234
|
+
columns = result.column_names
|
|
235
|
+
rows = result.result_rows
|
|
236
|
+
return [dict(zip(columns, row)) for row in rows]
|
|
237
|
+
elif sql_type == "first":
|
|
238
|
+
if "limit" not in sql:
|
|
239
|
+
sql += " limit 1"
|
|
240
|
+
result = self.pool.query(sql).result_rows
|
|
241
|
+
columns = result.column_names
|
|
242
|
+
rows = result.result_rows
|
|
243
|
+
return [dict(zip(columns, row)) for row in rows]
|
|
244
|
+
elif sql_type == "delete":
|
|
245
|
+
rs = self.pool.command(sql)
|
|
246
|
+
return rs
|
|
247
|
+
elif sql_type == "update":
|
|
248
|
+
rs = self.pool.command(sql)
|
|
249
|
+
return rs
|
|
250
|
+
else:
|
|
251
|
+
rs = self.pool.command(sql)
|
|
252
|
+
return rs
|
|
184
253
|
else:
|
|
185
|
-
|
|
254
|
+
raise Exception(f"暂不支持数据库类型:{self.connect_info.db_type}")
|
|
186
255
|
|
|
187
|
-
async def async_exec_(self,sql_type:str,sql):
|
|
256
|
+
async def async_exec_(self, sql_type: str, sql):
|
|
188
257
|
if sql_type not in ["all", "first", "delete", "update", "insert"]:
|
|
189
258
|
raise Exception(f"sql_type must be all,first,delete,update,insert")
|
|
190
|
-
|
|
259
|
+
connect_params = self.connect_info.params or {}
|
|
260
|
+
creator_type = connect_params.get("creator_type") or "clickhouse_driver"
|
|
261
|
+
if self.connect_info.db_type in ["mysql", "doris", "ocean_base", "tidb", "postgresql"]:
|
|
191
262
|
if sql_type == "all":
|
|
192
263
|
async with self.pool.acquire() as conn:
|
|
193
264
|
async with conn.cursor() as cursor:
|
|
@@ -213,9 +284,52 @@ class DsHelper:
|
|
|
213
284
|
else:
|
|
214
285
|
async with self.pool.acquire() as conn:
|
|
215
286
|
async with conn.cursor() as cursor:
|
|
216
|
-
rs= await cursor.execute(sql)
|
|
287
|
+
rs = await cursor.execute(sql)
|
|
217
288
|
return rs
|
|
218
|
-
elif self.connect_info.db_type
|
|
219
|
-
|
|
289
|
+
elif self.connect_info.db_type in ["sqlite3"]:
|
|
290
|
+
if sql_type == "all":
|
|
291
|
+
cur = await self.pool.cursor()
|
|
292
|
+
await cur.execute(sql)
|
|
293
|
+
rs = await cur.fetchall()
|
|
294
|
+
return rs
|
|
295
|
+
elif sql_type == "first":
|
|
296
|
+
cur = await self.pool.cursor()
|
|
297
|
+
await cur.execute(sql)
|
|
298
|
+
rs = await cur.fetchone()
|
|
299
|
+
return rs
|
|
300
|
+
elif sql_type == "delete":
|
|
301
|
+
cur = await self.pool.cursor()
|
|
302
|
+
rs = await cur.execute(sql)
|
|
303
|
+
return rs
|
|
304
|
+
elif sql_type == "update":
|
|
305
|
+
cur = await self.pool.cursor()
|
|
306
|
+
rs = await cur.execute(sql)
|
|
307
|
+
return rs
|
|
308
|
+
else:
|
|
309
|
+
cur = await self.pool.cursor()
|
|
310
|
+
rs = await cur.execute(sql)
|
|
311
|
+
return rs
|
|
312
|
+
elif self.connect_info.db_type == "clickhouse" and creator_type == "clickhouse_connect":
|
|
313
|
+
if sql_type == "all":
|
|
314
|
+
result = await self.pool.query(sql).result_rows
|
|
315
|
+
columns = result.column_names
|
|
316
|
+
rows = result.result_rows
|
|
317
|
+
return [dict(zip(columns, row)) for row in rows]
|
|
318
|
+
elif sql_type == "first":
|
|
319
|
+
if "limit" not in sql:
|
|
320
|
+
sql += " limit 1"
|
|
321
|
+
result = await self.pool.query(sql).result_rows
|
|
322
|
+
columns = result.column_names
|
|
323
|
+
rows = result.result_rows
|
|
324
|
+
return [dict(zip(columns, row)) for row in rows]
|
|
325
|
+
elif sql_type == "delete":
|
|
326
|
+
rs = await self.pool.command(sql)
|
|
327
|
+
return rs
|
|
328
|
+
elif sql_type == "update":
|
|
329
|
+
rs = await self.pool.command(sql)
|
|
330
|
+
return rs
|
|
331
|
+
else:
|
|
332
|
+
rs = await self.pool.command(sql)
|
|
333
|
+
return rs
|
|
220
334
|
else:
|
|
221
|
-
|
|
335
|
+
raise Exception(f"暂不支持数据库类型:{self.connect_info.db_type}")
|
|
@@ -246,40 +246,66 @@ class Exec:
|
|
|
246
246
|
self.__connect_name__ = connect_name or self.__connect_name__
|
|
247
247
|
self._sql = ""
|
|
248
248
|
self._result = None
|
|
249
|
-
self.
|
|
249
|
+
self._sql_type = ""
|
|
250
250
|
|
|
251
|
-
def execute(self,
|
|
252
|
-
if not self.__connect_name__:
|
|
253
|
-
self.__connect_name__ =
|
|
254
|
-
|
|
255
|
-
|
|
251
|
+
def execute(self, statement: Union[Select, Update, Delete, Insert, str]):
|
|
252
|
+
if not self.__connect_name__ and not isinstance(statement, str):
|
|
253
|
+
self.__connect_name__ = statement._connect_name
|
|
254
|
+
if isinstance(statement, str):
|
|
255
|
+
self._sql = statement
|
|
256
256
|
return self
|
|
257
257
|
else:
|
|
258
|
+
self._sql = statement._sql()
|
|
258
259
|
return self
|
|
259
260
|
|
|
260
261
|
def all(self):
|
|
261
|
-
self.
|
|
262
|
-
self._result = DsHelper(self.__connect_name__).exec_(self.
|
|
262
|
+
self._sql_type = "all"
|
|
263
|
+
self._result = DsHelper(self.__connect_name__).exec_(self._sql_type, self._sql)
|
|
264
|
+
return self._result
|
|
265
|
+
|
|
266
|
+
async def async_all(self):
|
|
267
|
+
self._sql_type = "all"
|
|
268
|
+
self._result = await DsHelper(self.__connect_name__).async_exec_(self._sql_type, self._sql)
|
|
263
269
|
return self._result
|
|
264
270
|
|
|
265
271
|
def first(self):
|
|
266
|
-
self.
|
|
267
|
-
self._result = DsHelper(self.__connect_name__).exec_(self.
|
|
272
|
+
self._sql_type = "first"
|
|
273
|
+
self._result = DsHelper(self.__connect_name__).exec_(self._sql_type, self._sql)
|
|
274
|
+
return self._result
|
|
275
|
+
|
|
276
|
+
async def async_first(self):
|
|
277
|
+
self._sql_type = "first"
|
|
278
|
+
self._result = await DsHelper(self.__connect_name__).async_exec_(self._sql_type, self._sql)
|
|
268
279
|
return self._result
|
|
269
280
|
|
|
270
281
|
def update(self):
|
|
271
|
-
self.
|
|
272
|
-
self._result = DsHelper(self.__connect_name__).exec_(self.
|
|
282
|
+
self._sql_type = "update"
|
|
283
|
+
self._result = DsHelper(self.__connect_name__).exec_(self._sql_type, self._sql)
|
|
284
|
+
return self._result
|
|
285
|
+
|
|
286
|
+
async def async_update(self):
|
|
287
|
+
self._sql_type = "update"
|
|
288
|
+
self._result = await DsHelper(self.__connect_name__).async_exec_(self._sql_type, self._sql)
|
|
273
289
|
return self._result
|
|
274
290
|
|
|
275
291
|
def delete(self):
|
|
276
|
-
self.
|
|
277
|
-
self._result = DsHelper(self.__connect_name__).exec_(self.
|
|
292
|
+
self._sql_type = "delete"
|
|
293
|
+
self._result = DsHelper(self.__connect_name__).exec_(self._sql_type, self._sql)
|
|
294
|
+
return self._result
|
|
295
|
+
|
|
296
|
+
async def async_delete(self):
|
|
297
|
+
self._sql_type = "delete"
|
|
298
|
+
self._result = await DsHelper(self.__connect_name__).async_exec_(self._sql_type, self._sql)
|
|
278
299
|
return self._result
|
|
279
300
|
|
|
280
301
|
def insert(self):
|
|
281
|
-
self.
|
|
282
|
-
self._result = DsHelper(self.__connect_name__).exec_(self.
|
|
302
|
+
self._sql_type = "insert"
|
|
303
|
+
self._result = DsHelper(self.__connect_name__).exec_(self._sql_type, self._sql)
|
|
304
|
+
return self._result
|
|
305
|
+
|
|
306
|
+
async def async_insert(self):
|
|
307
|
+
self._sql_type = "insert"
|
|
308
|
+
self._result = await DsHelper(self.__connect_name__).async_exec_(self._sql_type, self._sql)
|
|
283
309
|
return self._result
|
|
284
310
|
|
|
285
311
|
|
|
@@ -3,15 +3,15 @@ lesscode_database/connect_pool.py,sha256=7mj3CRFvyGeE4ymPXRYJOzRX7otbknaRRhB74yJ
|
|
|
3
3
|
lesscode_database/connection_info.py,sha256=HMlA-hA0LE7jGUS8crZAgrBMB-o6B9mxrWYEywgqXHg,1307
|
|
4
4
|
lesscode_database/db_options.py,sha256=Z8Iy3pqDYW5YVVfvoFSsAYecK9LfiwRasYc3fzqIBt8,1928
|
|
5
5
|
lesscode_database/db_request.py,sha256=siZGXIdPuTlY4NwVLnU8098bVM_6jgQzSzeO4BzkDrA,4832
|
|
6
|
-
lesscode_database/ds_helper.py,sha256=
|
|
6
|
+
lesscode_database/ds_helper.py,sha256=17ArjRLH-Xz9qZcHbInDW9xDzV7YKWPB6Yu5na2qi7s,13719
|
|
7
7
|
lesscode_database/dynamic_import_package.py,sha256=J8hgGRHe6KrprOgOq-xbKHVAYHSjUBcNyTaSPvBmvIk,164
|
|
8
8
|
lesscode_database/mongo_base_model.py,sha256=cKHNmi5GJBGRxCtqsggEcrzIZK7__Z_4cVaIHxmqZsc,6406
|
|
9
9
|
lesscode_database/orm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
lesscode_database/orm/orm_exec.py,sha256=
|
|
10
|
+
lesscode_database/orm/orm_exec.py,sha256=EgpH6-lp_Q6s0dKLFZPXaNvb8z8iynQgN_h_sbAVgT4,11945
|
|
11
11
|
lesscode_database/orm/orm_func.py,sha256=-ZKO8XQQM1mUz5el-j8FkApjhI50zomg-FNfQVzwc5U,1570
|
|
12
12
|
lesscode_database/orm/orm_model.py,sha256=yMt9rE9e2gYqE8Fynzk-LeaPn6-TOzLoAWmgycSz1Ow,776
|
|
13
13
|
lesscode_database/orm/orm_typing.py,sha256=3roHzs4omS2XXcQ3yat0pb5otJZWiY52B9fsPlz9DDg,18568
|
|
14
|
-
lesscode_database-0.0.
|
|
15
|
-
lesscode_database-0.0.
|
|
16
|
-
lesscode_database-0.0.
|
|
17
|
-
lesscode_database-0.0.
|
|
14
|
+
lesscode_database-0.0.13.dist-info/METADATA,sha256=nKFVz9VFI8SUcfeb8BfthuOAXzWaaAimXpJ6brZG-J0,12213
|
|
15
|
+
lesscode_database-0.0.13.dist-info/WHEEL,sha256=KGYbc1zXlYddvwxnNty23BeaKzh7YuoSIvIMO4jEhvw,87
|
|
16
|
+
lesscode_database-0.0.13.dist-info/licenses/LICENSE,sha256=ELM9gDFm8bfsS-M5bQfUC0jn272Riqpsso986u5PdBQ,77
|
|
17
|
+
lesscode_database-0.0.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|