lesscode-database 0.0.2__tar.gz → 0.0.4__tar.gz
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-0.0.4/PKG-INFO +346 -0
- lesscode_database-0.0.4/README.md +333 -0
- lesscode_database-0.0.4/lesscode_database/connect_pool.py +837 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/lesscode_database/connection_info.py +4 -1
- lesscode_database-0.0.4/lesscode_database/version.py +1 -0
- lesscode_database-0.0.4/lesscode_database.egg-info/PKG-INFO +346 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/setup.py +2 -2
- lesscode_database-0.0.2/PKG-INFO +0 -206
- lesscode_database-0.0.2/README.md +0 -193
- lesscode_database-0.0.2/lesscode_database/connect_pool.py +0 -512
- lesscode_database-0.0.2/lesscode_database/version.py +0 -1
- lesscode_database-0.0.2/lesscode_database.egg-info/PKG-INFO +0 -206
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/LICENSE +0 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/lesscode_database/__init__.py +0 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/lesscode_database/options.py +0 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/lesscode_database.egg-info/SOURCES.txt +0 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/lesscode_database.egg-info/dependency_links.txt +0 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/lesscode_database.egg-info/top_level.txt +0 -0
- {lesscode_database-0.0.2 → lesscode_database-0.0.4}/setup.cfg +0 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: lesscode_database
|
|
3
|
+
Version: 0.0.4
|
|
4
|
+
Summary: lesscode_database是数据库连接工具包
|
|
5
|
+
Author: navysummer
|
|
6
|
+
Author-email: navysummer@yeah.net
|
|
7
|
+
Platform: python
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.6
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
|
|
14
|
+
# lesscode_database
|
|
15
|
+
|
|
16
|
+
数据库连接工具包
|
|
17
|
+
|
|
18
|
+
示例代码
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
import asyncio
|
|
22
|
+
|
|
23
|
+
from sqlalchemy import select, Column, VARCHAR, INTEGER, Table, MetaData
|
|
24
|
+
from sqlalchemy.ext.asyncio import async_sessionmaker
|
|
25
|
+
from sqlalchemy.orm import sessionmaker
|
|
26
|
+
|
|
27
|
+
from lesscode_database.connection_info import ConnectionInfo
|
|
28
|
+
from lesscode_database.options import options
|
|
29
|
+
|
|
30
|
+
options.conn_list = [
|
|
31
|
+
ConnectionInfo(dialect="mysql", name="mysql", host="127.0.0.1", port=3306, user="root",
|
|
32
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
33
|
+
async_enable=True),
|
|
34
|
+
ConnectionInfo(dialect="doris", name="doris", host="127.0.0.1", port=9030, user="root",
|
|
35
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
36
|
+
async_enable=True),
|
|
37
|
+
ConnectionInfo(dialect="ocean_base", name="ocean_base", host="127.0.0.1", port=2883, user="root",
|
|
38
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
39
|
+
async_enable=True),
|
|
40
|
+
ConnectionInfo(dialect="tidb", name="tidb", host="127.0.0.1", port=4000, user="root",
|
|
41
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
42
|
+
async_enable=True),
|
|
43
|
+
ConnectionInfo(dialect="mssql", name="mssql", host="127.0.0.1", port=1433, user="root",
|
|
44
|
+
password="root", db_name="test", enable=False, async_enable=False),
|
|
45
|
+
ConnectionInfo(dialect="oracle", name="oracle", host="127.0.0.1", port=1521, user="root",
|
|
46
|
+
password="root", db_name="test", enable=False, async_enable=False),
|
|
47
|
+
ConnectionInfo(dialect="sqlite3", name="sqlite3", dsn="/test/test.db", async_enable=False),
|
|
48
|
+
ConnectionInfo(dialect="elasticsearch", name="es", host="127.0.0.1", port=9210, user="root",
|
|
49
|
+
password="root", enable=False, async_enable=True),
|
|
50
|
+
ConnectionInfo(dialect="mongo", name="mongo", host="127.0.0.1", port=27027, user="root",
|
|
51
|
+
password="root", enable=False, async_enable=True),
|
|
52
|
+
ConnectionInfo(dialect="nebula", name="nebula", host="127.0.0.1", port=9669, user="root",
|
|
53
|
+
password="nebula", db_name="nebula", enable=False),
|
|
54
|
+
ConnectionInfo(dialect="postgresql", host="127.0.0.1", port=5454, user="root", password="root",
|
|
55
|
+
db_name="root", enable=False, async_enable=True),
|
|
56
|
+
ConnectionInfo(dialect="redis", name="redis", host="127.0.0.1", port=6379, user=None,
|
|
57
|
+
password=None, db_name=1, enable=False, async_enable=True),
|
|
58
|
+
# sqlalchemy 异步支持mysql,postgresql,tidb,ocean_base,doris;
|
|
59
|
+
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle
|
|
60
|
+
ConnectionInfo(dialect="sqlalchemy", name="sqlalchemy", host="127.0.0.1", port=3306, user="root",
|
|
61
|
+
password="root", db_name="test", enable=False, async_enable=False, params={"db_type": "mysql"}),
|
|
62
|
+
ConnectionInfo(dialect="neo4j", name="neo4j", host="127.0.0.1", port=7687, user="neo4j",
|
|
63
|
+
password="neo4j", db_name=None, enable=False, async_enable=True),
|
|
64
|
+
ConnectionInfo(dialect="clickhouse", name="clickhouse", dsn="clickhouse://localhost", host="127.0.0.1", port=9000,
|
|
65
|
+
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
66
|
+
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
# mysql 同步测试,async_enable=False
|
|
70
|
+
with options.mysql.dedicated_connection() as conn:
|
|
71
|
+
conn.ping(reconnect=True)
|
|
72
|
+
with conn.cursor() as cursor:
|
|
73
|
+
cursor.execute("select 1")
|
|
74
|
+
description = cursor.description
|
|
75
|
+
rs = cursor.fetchone()
|
|
76
|
+
print(rs)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# mysql 异步测试,async_enable=True
|
|
80
|
+
async def async_mysql_test():
|
|
81
|
+
async with options.mysql.acquire() as conn:
|
|
82
|
+
async with conn.cursor() as cursor:
|
|
83
|
+
await cursor.execute("select 1")
|
|
84
|
+
rs = await cursor.fetchone()
|
|
85
|
+
print(rs)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
loop = asyncio.get_event_loop()
|
|
89
|
+
loop.run_until_complete(async_mysql_test())
|
|
90
|
+
|
|
91
|
+
# doris 同步测试,async_enable=False
|
|
92
|
+
with options.doris.dedicated_connection() as conn:
|
|
93
|
+
conn.ping(reconnect=True)
|
|
94
|
+
with conn.cursor() as cursor:
|
|
95
|
+
cursor.execute("select 1")
|
|
96
|
+
description = cursor.description
|
|
97
|
+
rs = cursor.fetchone()
|
|
98
|
+
print(rs)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
# doris 异步测试,async_enable=True
|
|
102
|
+
async def async_doris_test():
|
|
103
|
+
async with options.doris.acquire() as conn:
|
|
104
|
+
async with conn.cursor() as cursor:
|
|
105
|
+
await cursor.execute("select 1")
|
|
106
|
+
rs = await cursor.fetchone()
|
|
107
|
+
print(rs)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
loop = asyncio.get_event_loop()
|
|
111
|
+
loop.run_until_complete(async_doris_test())
|
|
112
|
+
|
|
113
|
+
# ocean_base 同步测试,async_enable=False
|
|
114
|
+
with options.ocean_base.dedicated_connection() as conn:
|
|
115
|
+
conn.ping(reconnect=True)
|
|
116
|
+
with conn.cursor() as cursor:
|
|
117
|
+
cursor.execute("select 1")
|
|
118
|
+
description = cursor.description
|
|
119
|
+
rs = cursor.fetchone()
|
|
120
|
+
print(rs)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# ocean_base 异步测试,async_enable=True
|
|
124
|
+
async def async_ocean_base_test():
|
|
125
|
+
async with options.ocean_base.acquire() as conn:
|
|
126
|
+
async with conn.cursor() as cursor:
|
|
127
|
+
await cursor.execute("select 1")
|
|
128
|
+
rs = await cursor.fetchone()
|
|
129
|
+
print(rs)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
loop = asyncio.get_event_loop()
|
|
133
|
+
loop.run_until_complete(async_ocean_base_test())
|
|
134
|
+
|
|
135
|
+
# tidb 同步测试,async_enable=False
|
|
136
|
+
with options.tidb.dedicated_connection() as conn:
|
|
137
|
+
conn.ping(reconnect=True)
|
|
138
|
+
with conn.cursor() as cursor:
|
|
139
|
+
cursor.execute("select 1")
|
|
140
|
+
description = cursor.description
|
|
141
|
+
rs = cursor.fetchone()
|
|
142
|
+
print(rs)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# tidb 异步测试,async_enable=True
|
|
146
|
+
async def async_tidb_test():
|
|
147
|
+
async with options.tidb.acquire() as conn:
|
|
148
|
+
async with conn.cursor() as cursor:
|
|
149
|
+
await cursor.execute("select 1")
|
|
150
|
+
rs = await cursor.fetchone()
|
|
151
|
+
print(rs)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
loop = asyncio.get_event_loop()
|
|
155
|
+
loop.run_until_complete(async_tidb_test())
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
# sqlite3 异步测试
|
|
159
|
+
async def async_sqlite3_test():
|
|
160
|
+
cur = await options.sqlite3.cursor()
|
|
161
|
+
await cur.execute("SELECT 1")
|
|
162
|
+
row = await cur.fetchone()
|
|
163
|
+
print(row)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
loop = asyncio.get_event_loop()
|
|
167
|
+
loop.run_until_complete(async_sqlite3_test())
|
|
168
|
+
|
|
169
|
+
# sqlite3 同步测试
|
|
170
|
+
cursor = options.sqlite3.cursor()
|
|
171
|
+
cursor.execute('select 1')
|
|
172
|
+
row = cursor.fetchone()
|
|
173
|
+
print(row)
|
|
174
|
+
|
|
175
|
+
# es同步测试,async_enable=False
|
|
176
|
+
body = {
|
|
177
|
+
"query": {
|
|
178
|
+
"bool": {
|
|
179
|
+
"must": []
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"size": 1
|
|
183
|
+
}
|
|
184
|
+
resp = options.es.search(
|
|
185
|
+
index="test",
|
|
186
|
+
body=body
|
|
187
|
+
)
|
|
188
|
+
print(resp)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
# es异步测试,async_enable=True
|
|
192
|
+
async def async_es_test():
|
|
193
|
+
resp = await options.es.search(
|
|
194
|
+
index="test",
|
|
195
|
+
body={"query": {"match_all": {}}},
|
|
196
|
+
size=1,
|
|
197
|
+
)
|
|
198
|
+
print(resp)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
loop = asyncio.get_event_loop()
|
|
202
|
+
loop.run_until_complete(async_es_test())
|
|
203
|
+
|
|
204
|
+
# sql server同步测试
|
|
205
|
+
cursor = options.mssql.cursor()
|
|
206
|
+
cursor.execute('SELECT 1')
|
|
207
|
+
row = cursor.fetchone()
|
|
208
|
+
print(row)
|
|
209
|
+
|
|
210
|
+
# sql server暂不支持异步测试
|
|
211
|
+
|
|
212
|
+
# oracle 同步测试
|
|
213
|
+
cursor = options.oracle.cursor()
|
|
214
|
+
cursor.execute('select 1')
|
|
215
|
+
row = cursor.fetchone()
|
|
216
|
+
print(row)
|
|
217
|
+
|
|
218
|
+
# oracle暂不支持异步测试
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
# mongo同步测试,async_enable=False
|
|
222
|
+
print(options.mongo.test.test.find_one())
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
# mongo异步测试,async_enable=True
|
|
226
|
+
async def async_mongo_test():
|
|
227
|
+
resp = await options.mongo.test.test.find_one()
|
|
228
|
+
print(resp)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
loop = asyncio.get_event_loop()
|
|
232
|
+
loop.run_until_complete(async_mongo_test())
|
|
233
|
+
|
|
234
|
+
# nebula同步测试,async_enable=False
|
|
235
|
+
with options.nebula.session_context("root", "nebula") as session:
|
|
236
|
+
session.execute(f'USE test')
|
|
237
|
+
result = session.execute("match (t:Test) return t limit 1")
|
|
238
|
+
print(result)
|
|
239
|
+
|
|
240
|
+
# nebula暂不支持异步
|
|
241
|
+
|
|
242
|
+
# postgresql同步测试,async_enable=False
|
|
243
|
+
with options.postgresql.connection() as conn:
|
|
244
|
+
with conn.cursor() as cursor:
|
|
245
|
+
cursor.execute("select 1")
|
|
246
|
+
rs = cursor.fetchone()
|
|
247
|
+
print(rs)
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
# postgresql异步测试,async_enable=True
|
|
251
|
+
async def async_pg_test():
|
|
252
|
+
async with options.postgresql.acquire() as conn:
|
|
253
|
+
async with conn.cursor() as cur:
|
|
254
|
+
await cur.execute("select 1")
|
|
255
|
+
rs = await cur.fetchone()
|
|
256
|
+
print(rs)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
loop = asyncio.get_event_loop()
|
|
260
|
+
loop.run_until_complete(async_pg_test())
|
|
261
|
+
|
|
262
|
+
# redis 同步测试,async_enable=False
|
|
263
|
+
print(options.redis.exists("test"))
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
# redis 异步测试,async_enable=True
|
|
267
|
+
async def async_redis_test():
|
|
268
|
+
rs = await options.redis.exists("test")
|
|
269
|
+
print(rs)
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
loop = asyncio.get_event_loop()
|
|
273
|
+
loop.run_until_complete(async_redis_test())
|
|
274
|
+
|
|
275
|
+
# sqlalchemy table
|
|
276
|
+
meta = MetaData()
|
|
277
|
+
t1 = Table("test_user", meta, Column("name", VARCHAR(collation='utf8mb3_bin', length=255)),
|
|
278
|
+
Column(name='id', comment=None, nullable=False, autoincrement=False, primary_key=True, type_=INTEGER(),
|
|
279
|
+
server_default=None))
|
|
280
|
+
|
|
281
|
+
# sqlalchemy同步测试,async_enable=False
|
|
282
|
+
with sessionmaker(bind=options.sqlalchemy)() as session:
|
|
283
|
+
cur = session.execute(select(t1))
|
|
284
|
+
print(cur.fetchall())
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
# sqlalchemy异步测试,async_enable=True
|
|
288
|
+
async def async_sqlalchemy_test():
|
|
289
|
+
async with async_sessionmaker(options.sqlalchemy)() as session:
|
|
290
|
+
cur = await session.execute(select(t1))
|
|
291
|
+
|
|
292
|
+
print(cur.fetchall())
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
loop = asyncio.get_event_loop()
|
|
296
|
+
loop.run_until_complete(async_sqlalchemy_test())
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
# neo4j同步测试
|
|
300
|
+
def query(tx):
|
|
301
|
+
nql = "MATCH (c:Company) return c limit 1"
|
|
302
|
+
for record in tx.run(nql):
|
|
303
|
+
print(record)
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
with options.neo4j.session(database="invest") as session:
|
|
307
|
+
session.execute_read(query)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
# neo4j异步测试
|
|
311
|
+
async def query(tx):
|
|
312
|
+
nql = "MATCH (c:Company) return c limit 1"
|
|
313
|
+
res = await tx.run(nql)
|
|
314
|
+
async for record in res:
|
|
315
|
+
print(record)
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
async def async_neo4j_test():
|
|
319
|
+
async with options.neo4j.session(database="invest") as session:
|
|
320
|
+
await session.execute_read(query)
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
loop = asyncio.get_event_loop()
|
|
324
|
+
loop.run_until_complete(async_neo4j_test())
|
|
325
|
+
|
|
326
|
+
# clickhouse 同步测试
|
|
327
|
+
with options.clickhouse as conn:
|
|
328
|
+
with conn.cursor() as cursor:
|
|
329
|
+
cursor.execute('SELECT 1')
|
|
330
|
+
print(cursor.fetchall())
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
# clickhouse 异步测试测试
|
|
334
|
+
async def async_clickhouse_test():
|
|
335
|
+
async with options.clickhouse.acquire() as conn:
|
|
336
|
+
async with conn.cursor() as cursor:
|
|
337
|
+
await cursor.execute("SELECT 1")
|
|
338
|
+
ret = await cursor.fetchone()
|
|
339
|
+
print(ret)
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
loop = asyncio.get_event_loop()
|
|
343
|
+
loop.run_until_complete(async_clickhouse_test())
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
```
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# lesscode_database
|
|
2
|
+
|
|
3
|
+
数据库连接工具包
|
|
4
|
+
|
|
5
|
+
示例代码
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
import asyncio
|
|
9
|
+
|
|
10
|
+
from sqlalchemy import select, Column, VARCHAR, INTEGER, Table, MetaData
|
|
11
|
+
from sqlalchemy.ext.asyncio import async_sessionmaker
|
|
12
|
+
from sqlalchemy.orm import sessionmaker
|
|
13
|
+
|
|
14
|
+
from lesscode_database.connection_info import ConnectionInfo
|
|
15
|
+
from lesscode_database.options import options
|
|
16
|
+
|
|
17
|
+
options.conn_list = [
|
|
18
|
+
ConnectionInfo(dialect="mysql", name="mysql", host="127.0.0.1", port=3306, user="root",
|
|
19
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
20
|
+
async_enable=True),
|
|
21
|
+
ConnectionInfo(dialect="doris", name="doris", host="127.0.0.1", port=9030, user="root",
|
|
22
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
23
|
+
async_enable=True),
|
|
24
|
+
ConnectionInfo(dialect="ocean_base", name="ocean_base", host="127.0.0.1", port=2883, user="root",
|
|
25
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
26
|
+
async_enable=True),
|
|
27
|
+
ConnectionInfo(dialect="tidb", name="tidb", host="127.0.0.1", port=4000, user="root",
|
|
28
|
+
password="root", db_name="test", enable=False, params={"pool_recycle": 3600},
|
|
29
|
+
async_enable=True),
|
|
30
|
+
ConnectionInfo(dialect="mssql", name="mssql", host="127.0.0.1", port=1433, user="root",
|
|
31
|
+
password="root", db_name="test", enable=False, async_enable=False),
|
|
32
|
+
ConnectionInfo(dialect="oracle", name="oracle", host="127.0.0.1", port=1521, user="root",
|
|
33
|
+
password="root", db_name="test", enable=False, async_enable=False),
|
|
34
|
+
ConnectionInfo(dialect="sqlite3", name="sqlite3", dsn="/test/test.db", async_enable=False),
|
|
35
|
+
ConnectionInfo(dialect="elasticsearch", name="es", host="127.0.0.1", port=9210, user="root",
|
|
36
|
+
password="root", enable=False, async_enable=True),
|
|
37
|
+
ConnectionInfo(dialect="mongo", name="mongo", host="127.0.0.1", port=27027, user="root",
|
|
38
|
+
password="root", enable=False, async_enable=True),
|
|
39
|
+
ConnectionInfo(dialect="nebula", name="nebula", host="127.0.0.1", port=9669, user="root",
|
|
40
|
+
password="nebula", db_name="nebula", enable=False),
|
|
41
|
+
ConnectionInfo(dialect="postgresql", host="127.0.0.1", port=5454, user="root", password="root",
|
|
42
|
+
db_name="root", enable=False, async_enable=True),
|
|
43
|
+
ConnectionInfo(dialect="redis", name="redis", host="127.0.0.1", port=6379, user=None,
|
|
44
|
+
password=None, db_name=1, enable=False, async_enable=True),
|
|
45
|
+
# sqlalchemy 异步支持mysql,postgresql,tidb,ocean_base,doris;
|
|
46
|
+
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle
|
|
47
|
+
ConnectionInfo(dialect="sqlalchemy", name="sqlalchemy", host="127.0.0.1", port=3306, user="root",
|
|
48
|
+
password="root", db_name="test", enable=False, async_enable=False, params={"db_type": "mysql"}),
|
|
49
|
+
ConnectionInfo(dialect="neo4j", name="neo4j", host="127.0.0.1", port=7687, user="neo4j",
|
|
50
|
+
password="neo4j", db_name=None, enable=False, async_enable=True),
|
|
51
|
+
ConnectionInfo(dialect="clickhouse", name="clickhouse", dsn="clickhouse://localhost", host="127.0.0.1", port=9000,
|
|
52
|
+
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
53
|
+
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
# mysql 同步测试,async_enable=False
|
|
57
|
+
with options.mysql.dedicated_connection() as conn:
|
|
58
|
+
conn.ping(reconnect=True)
|
|
59
|
+
with conn.cursor() as cursor:
|
|
60
|
+
cursor.execute("select 1")
|
|
61
|
+
description = cursor.description
|
|
62
|
+
rs = cursor.fetchone()
|
|
63
|
+
print(rs)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
# mysql 异步测试,async_enable=True
|
|
67
|
+
async def async_mysql_test():
|
|
68
|
+
async with options.mysql.acquire() as conn:
|
|
69
|
+
async with conn.cursor() as cursor:
|
|
70
|
+
await cursor.execute("select 1")
|
|
71
|
+
rs = await cursor.fetchone()
|
|
72
|
+
print(rs)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
loop = asyncio.get_event_loop()
|
|
76
|
+
loop.run_until_complete(async_mysql_test())
|
|
77
|
+
|
|
78
|
+
# doris 同步测试,async_enable=False
|
|
79
|
+
with options.doris.dedicated_connection() as conn:
|
|
80
|
+
conn.ping(reconnect=True)
|
|
81
|
+
with conn.cursor() as cursor:
|
|
82
|
+
cursor.execute("select 1")
|
|
83
|
+
description = cursor.description
|
|
84
|
+
rs = cursor.fetchone()
|
|
85
|
+
print(rs)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# doris 异步测试,async_enable=True
|
|
89
|
+
async def async_doris_test():
|
|
90
|
+
async with options.doris.acquire() as conn:
|
|
91
|
+
async with conn.cursor() as cursor:
|
|
92
|
+
await cursor.execute("select 1")
|
|
93
|
+
rs = await cursor.fetchone()
|
|
94
|
+
print(rs)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
loop = asyncio.get_event_loop()
|
|
98
|
+
loop.run_until_complete(async_doris_test())
|
|
99
|
+
|
|
100
|
+
# ocean_base 同步测试,async_enable=False
|
|
101
|
+
with options.ocean_base.dedicated_connection() as conn:
|
|
102
|
+
conn.ping(reconnect=True)
|
|
103
|
+
with conn.cursor() as cursor:
|
|
104
|
+
cursor.execute("select 1")
|
|
105
|
+
description = cursor.description
|
|
106
|
+
rs = cursor.fetchone()
|
|
107
|
+
print(rs)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# ocean_base 异步测试,async_enable=True
|
|
111
|
+
async def async_ocean_base_test():
|
|
112
|
+
async with options.ocean_base.acquire() as conn:
|
|
113
|
+
async with conn.cursor() as cursor:
|
|
114
|
+
await cursor.execute("select 1")
|
|
115
|
+
rs = await cursor.fetchone()
|
|
116
|
+
print(rs)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
loop = asyncio.get_event_loop()
|
|
120
|
+
loop.run_until_complete(async_ocean_base_test())
|
|
121
|
+
|
|
122
|
+
# tidb 同步测试,async_enable=False
|
|
123
|
+
with options.tidb.dedicated_connection() as conn:
|
|
124
|
+
conn.ping(reconnect=True)
|
|
125
|
+
with conn.cursor() as cursor:
|
|
126
|
+
cursor.execute("select 1")
|
|
127
|
+
description = cursor.description
|
|
128
|
+
rs = cursor.fetchone()
|
|
129
|
+
print(rs)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# tidb 异步测试,async_enable=True
|
|
133
|
+
async def async_tidb_test():
|
|
134
|
+
async with options.tidb.acquire() as conn:
|
|
135
|
+
async with conn.cursor() as cursor:
|
|
136
|
+
await cursor.execute("select 1")
|
|
137
|
+
rs = await cursor.fetchone()
|
|
138
|
+
print(rs)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
loop = asyncio.get_event_loop()
|
|
142
|
+
loop.run_until_complete(async_tidb_test())
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# sqlite3 异步测试
|
|
146
|
+
async def async_sqlite3_test():
|
|
147
|
+
cur = await options.sqlite3.cursor()
|
|
148
|
+
await cur.execute("SELECT 1")
|
|
149
|
+
row = await cur.fetchone()
|
|
150
|
+
print(row)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
loop = asyncio.get_event_loop()
|
|
154
|
+
loop.run_until_complete(async_sqlite3_test())
|
|
155
|
+
|
|
156
|
+
# sqlite3 同步测试
|
|
157
|
+
cursor = options.sqlite3.cursor()
|
|
158
|
+
cursor.execute('select 1')
|
|
159
|
+
row = cursor.fetchone()
|
|
160
|
+
print(row)
|
|
161
|
+
|
|
162
|
+
# es同步测试,async_enable=False
|
|
163
|
+
body = {
|
|
164
|
+
"query": {
|
|
165
|
+
"bool": {
|
|
166
|
+
"must": []
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"size": 1
|
|
170
|
+
}
|
|
171
|
+
resp = options.es.search(
|
|
172
|
+
index="test",
|
|
173
|
+
body=body
|
|
174
|
+
)
|
|
175
|
+
print(resp)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
# es异步测试,async_enable=True
|
|
179
|
+
async def async_es_test():
|
|
180
|
+
resp = await options.es.search(
|
|
181
|
+
index="test",
|
|
182
|
+
body={"query": {"match_all": {}}},
|
|
183
|
+
size=1,
|
|
184
|
+
)
|
|
185
|
+
print(resp)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
loop = asyncio.get_event_loop()
|
|
189
|
+
loop.run_until_complete(async_es_test())
|
|
190
|
+
|
|
191
|
+
# sql server同步测试
|
|
192
|
+
cursor = options.mssql.cursor()
|
|
193
|
+
cursor.execute('SELECT 1')
|
|
194
|
+
row = cursor.fetchone()
|
|
195
|
+
print(row)
|
|
196
|
+
|
|
197
|
+
# sql server暂不支持异步测试
|
|
198
|
+
|
|
199
|
+
# oracle 同步测试
|
|
200
|
+
cursor = options.oracle.cursor()
|
|
201
|
+
cursor.execute('select 1')
|
|
202
|
+
row = cursor.fetchone()
|
|
203
|
+
print(row)
|
|
204
|
+
|
|
205
|
+
# oracle暂不支持异步测试
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
# mongo同步测试,async_enable=False
|
|
209
|
+
print(options.mongo.test.test.find_one())
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
# mongo异步测试,async_enable=True
|
|
213
|
+
async def async_mongo_test():
|
|
214
|
+
resp = await options.mongo.test.test.find_one()
|
|
215
|
+
print(resp)
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
loop = asyncio.get_event_loop()
|
|
219
|
+
loop.run_until_complete(async_mongo_test())
|
|
220
|
+
|
|
221
|
+
# nebula同步测试,async_enable=False
|
|
222
|
+
with options.nebula.session_context("root", "nebula") as session:
|
|
223
|
+
session.execute(f'USE test')
|
|
224
|
+
result = session.execute("match (t:Test) return t limit 1")
|
|
225
|
+
print(result)
|
|
226
|
+
|
|
227
|
+
# nebula暂不支持异步
|
|
228
|
+
|
|
229
|
+
# postgresql同步测试,async_enable=False
|
|
230
|
+
with options.postgresql.connection() as conn:
|
|
231
|
+
with conn.cursor() as cursor:
|
|
232
|
+
cursor.execute("select 1")
|
|
233
|
+
rs = cursor.fetchone()
|
|
234
|
+
print(rs)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
# postgresql异步测试,async_enable=True
|
|
238
|
+
async def async_pg_test():
|
|
239
|
+
async with options.postgresql.acquire() as conn:
|
|
240
|
+
async with conn.cursor() as cur:
|
|
241
|
+
await cur.execute("select 1")
|
|
242
|
+
rs = await cur.fetchone()
|
|
243
|
+
print(rs)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
loop = asyncio.get_event_loop()
|
|
247
|
+
loop.run_until_complete(async_pg_test())
|
|
248
|
+
|
|
249
|
+
# redis 同步测试,async_enable=False
|
|
250
|
+
print(options.redis.exists("test"))
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
# redis 异步测试,async_enable=True
|
|
254
|
+
async def async_redis_test():
|
|
255
|
+
rs = await options.redis.exists("test")
|
|
256
|
+
print(rs)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
loop = asyncio.get_event_loop()
|
|
260
|
+
loop.run_until_complete(async_redis_test())
|
|
261
|
+
|
|
262
|
+
# sqlalchemy table
|
|
263
|
+
meta = MetaData()
|
|
264
|
+
t1 = Table("test_user", meta, Column("name", VARCHAR(collation='utf8mb3_bin', length=255)),
|
|
265
|
+
Column(name='id', comment=None, nullable=False, autoincrement=False, primary_key=True, type_=INTEGER(),
|
|
266
|
+
server_default=None))
|
|
267
|
+
|
|
268
|
+
# sqlalchemy同步测试,async_enable=False
|
|
269
|
+
with sessionmaker(bind=options.sqlalchemy)() as session:
|
|
270
|
+
cur = session.execute(select(t1))
|
|
271
|
+
print(cur.fetchall())
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
# sqlalchemy异步测试,async_enable=True
|
|
275
|
+
async def async_sqlalchemy_test():
|
|
276
|
+
async with async_sessionmaker(options.sqlalchemy)() as session:
|
|
277
|
+
cur = await session.execute(select(t1))
|
|
278
|
+
|
|
279
|
+
print(cur.fetchall())
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
loop = asyncio.get_event_loop()
|
|
283
|
+
loop.run_until_complete(async_sqlalchemy_test())
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
# neo4j同步测试
|
|
287
|
+
def query(tx):
|
|
288
|
+
nql = "MATCH (c:Company) return c limit 1"
|
|
289
|
+
for record in tx.run(nql):
|
|
290
|
+
print(record)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
with options.neo4j.session(database="invest") as session:
|
|
294
|
+
session.execute_read(query)
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
# neo4j异步测试
|
|
298
|
+
async def query(tx):
|
|
299
|
+
nql = "MATCH (c:Company) return c limit 1"
|
|
300
|
+
res = await tx.run(nql)
|
|
301
|
+
async for record in res:
|
|
302
|
+
print(record)
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
async def async_neo4j_test():
|
|
306
|
+
async with options.neo4j.session(database="invest") as session:
|
|
307
|
+
await session.execute_read(query)
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
loop = asyncio.get_event_loop()
|
|
311
|
+
loop.run_until_complete(async_neo4j_test())
|
|
312
|
+
|
|
313
|
+
# clickhouse 同步测试
|
|
314
|
+
with options.clickhouse as conn:
|
|
315
|
+
with conn.cursor() as cursor:
|
|
316
|
+
cursor.execute('SELECT 1')
|
|
317
|
+
print(cursor.fetchall())
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
# clickhouse 异步测试测试
|
|
321
|
+
async def async_clickhouse_test():
|
|
322
|
+
async with options.clickhouse.acquire() as conn:
|
|
323
|
+
async with conn.cursor() as cursor:
|
|
324
|
+
await cursor.execute("SELECT 1")
|
|
325
|
+
ret = await cursor.fetchone()
|
|
326
|
+
print(ret)
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
loop = asyncio.get_event_loop()
|
|
330
|
+
loop.run_until_complete(async_clickhouse_test())
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
```
|