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.

@@ -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
+ ```