lesscode-database 0.0.9__tar.gz → 0.0.10__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.
- lesscode_database-0.0.9/README.md → lesscode_database-0.0.10/PKG-INFO +24 -1
- lesscode_database-0.0.9/PKG-INFO → lesscode_database-0.0.10/README.md +11 -14
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/connect_pool.py +59 -11
- lesscode_database-0.0.10/lesscode_database/version.py +1 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database.egg-info/PKG-INFO +12 -2
- lesscode_database-0.0.9/lesscode_database/version.py +0 -1
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/LICENSE +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/__init__.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/connection_info.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/db_options.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/db_request.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/ds_helper.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/dynamic_import_package.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/mongo_base_model.py +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database.egg-info/SOURCES.txt +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database.egg-info/dependency_links.txt +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database.egg-info/top_level.txt +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/setup.cfg +0 -0
- {lesscode_database-0.0.9 → lesscode_database-0.0.10}/setup.py +0 -0
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: lesscode_database
|
|
3
|
+
Version: 0.0.10
|
|
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
|
+
|
|
1
14
|
# lesscode_database
|
|
2
15
|
|
|
3
16
|
数据库连接工具包
|
|
@@ -44,13 +57,15 @@ db_options.conn_list = [
|
|
|
44
57
|
ConnectionInfo(dialect="redis", name="redis", host="127.0.0.1", port=6379, user=None,
|
|
45
58
|
password=None, db_name=1, enable=False, async_enable=True),
|
|
46
59
|
# sqlalchemy 异步支持mysql,postgresql,tidb,ocean_base,doris;
|
|
47
|
-
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle
|
|
60
|
+
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle,dm
|
|
48
61
|
ConnectionInfo(dialect="sqlalchemy", name="sqlalchemy", host="127.0.0.1", port=3306, user="root",
|
|
49
62
|
password="root", db_name="test", enable=False, async_enable=False, params={"db_type": "mysql"}),
|
|
50
63
|
ConnectionInfo(dialect="neo4j", name="neo4j", host="127.0.0.1", port=7687, user="neo4j",
|
|
51
64
|
password="neo4j", db_name=None, enable=False, async_enable=True),
|
|
52
65
|
ConnectionInfo(dialect="clickhouse", name="clickhouse", dsn="clickhouse://localhost", host="127.0.0.1", port=9000,
|
|
53
66
|
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
67
|
+
ConnectionInfo(dialect="dm", name="dm", dsn=None, host="127.0.0.1", port=5236,
|
|
68
|
+
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
54
69
|
|
|
55
70
|
]
|
|
56
71
|
|
|
@@ -345,4 +360,12 @@ async def async_esapi_test():
|
|
|
345
360
|
loop = asyncio.get_event_loop()
|
|
346
361
|
loop.run_until_complete(async_esapi_test())
|
|
347
362
|
|
|
363
|
+
|
|
364
|
+
# 达梦数据库 同步测试
|
|
365
|
+
with DsHelper("dm").pool.dedicated_connection() as conn:
|
|
366
|
+
with conn.cursor() as cursor:
|
|
367
|
+
cursor.execute('SELECT 1')
|
|
368
|
+
print(cursor.fetchall())
|
|
369
|
+
|
|
370
|
+
|
|
348
371
|
```
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: lesscode_database
|
|
3
|
-
Version: 0.0.9
|
|
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
1
|
# lesscode_database
|
|
15
2
|
|
|
16
3
|
数据库连接工具包
|
|
@@ -57,13 +44,15 @@ db_options.conn_list = [
|
|
|
57
44
|
ConnectionInfo(dialect="redis", name="redis", host="127.0.0.1", port=6379, user=None,
|
|
58
45
|
password=None, db_name=1, enable=False, async_enable=True),
|
|
59
46
|
# sqlalchemy 异步支持mysql,postgresql,tidb,ocean_base,doris;
|
|
60
|
-
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle
|
|
47
|
+
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle,dm
|
|
61
48
|
ConnectionInfo(dialect="sqlalchemy", name="sqlalchemy", host="127.0.0.1", port=3306, user="root",
|
|
62
49
|
password="root", db_name="test", enable=False, async_enable=False, params={"db_type": "mysql"}),
|
|
63
50
|
ConnectionInfo(dialect="neo4j", name="neo4j", host="127.0.0.1", port=7687, user="neo4j",
|
|
64
51
|
password="neo4j", db_name=None, enable=False, async_enable=True),
|
|
65
52
|
ConnectionInfo(dialect="clickhouse", name="clickhouse", dsn="clickhouse://localhost", host="127.0.0.1", port=9000,
|
|
66
53
|
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
54
|
+
ConnectionInfo(dialect="dm", name="dm", dsn=None, host="127.0.0.1", port=5236,
|
|
55
|
+
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
67
56
|
|
|
68
57
|
]
|
|
69
58
|
|
|
@@ -358,4 +347,12 @@ async def async_esapi_test():
|
|
|
358
347
|
loop = asyncio.get_event_loop()
|
|
359
348
|
loop.run_until_complete(async_esapi_test())
|
|
360
349
|
|
|
350
|
+
|
|
351
|
+
# 达梦数据库 同步测试
|
|
352
|
+
with DsHelper("dm").pool.dedicated_connection() as conn:
|
|
353
|
+
with conn.cursor() as cursor:
|
|
354
|
+
cursor.execute('SELECT 1')
|
|
355
|
+
print(cursor.fetchall())
|
|
356
|
+
|
|
357
|
+
|
|
361
358
|
```
|
|
@@ -674,6 +674,36 @@ class Pool:
|
|
|
674
674
|
**params)
|
|
675
675
|
return pool
|
|
676
676
|
|
|
677
|
+
@staticmethod
|
|
678
|
+
def sync_create_dm_pool(conn_info: ConnectionInfo):
|
|
679
|
+
try:
|
|
680
|
+
dmPython = importlib.import_module("dmPython")
|
|
681
|
+
except ImportError:
|
|
682
|
+
raise Exception(f"dmPython is not exist,run:pip install dmPython")
|
|
683
|
+
try:
|
|
684
|
+
pooled_db = importlib.import_module("dbutils.pooled_db")
|
|
685
|
+
except ImportError:
|
|
686
|
+
raise Exception(f"DBUtils is not exist,run:pip install DBUtils==3.0.2")
|
|
687
|
+
params = conn_info.params
|
|
688
|
+
if not isinstance(params, dict):
|
|
689
|
+
params = dict()
|
|
690
|
+
blocking = params.pop("blocking", True)
|
|
691
|
+
mincached = params.pop("mincached", conn_info.min_size)
|
|
692
|
+
maxusage = params.pop("maxusage", conn_info.min_size)
|
|
693
|
+
maxshared = params.pop("maxshared", conn_info.max_size)
|
|
694
|
+
maxcached = params.pop("maxcached", conn_info.max_size)
|
|
695
|
+
ping = params.pop("ping", 1)
|
|
696
|
+
autocommit = params.pop("autocommit", True)
|
|
697
|
+
pool = pooled_db.PooledDB(creator=dmPython, host=conn_info.host, port=conn_info.port,
|
|
698
|
+
user=conn_info.user,
|
|
699
|
+
password=conn_info.password, schema=conn_info.db_name,
|
|
700
|
+
mincached=mincached, blocking=blocking, maxusage=maxusage,
|
|
701
|
+
maxshared=maxshared, maxcached=maxcached,
|
|
702
|
+
ping=ping, maxconnections=conn_info.max_size,
|
|
703
|
+
autoCommit=autocommit,
|
|
704
|
+
**params)
|
|
705
|
+
return pool
|
|
706
|
+
|
|
677
707
|
@staticmethod
|
|
678
708
|
def create_sqlalchemy_pool(conn_info: ConnectionInfo):
|
|
679
709
|
"""
|
|
@@ -734,10 +764,10 @@ class Pool:
|
|
|
734
764
|
:param conn_info: 连接信息
|
|
735
765
|
:return:
|
|
736
766
|
"""
|
|
767
|
+
db_type = "mysql"
|
|
737
768
|
if conn_info.dsn:
|
|
738
769
|
url = conn_info.dsn
|
|
739
770
|
else:
|
|
740
|
-
db_type = "mysql"
|
|
741
771
|
if conn_info.params:
|
|
742
772
|
if conn_info.params.get("db_type"):
|
|
743
773
|
db_type = conn_info.params.pop("db_type")
|
|
@@ -771,23 +801,35 @@ class Pool:
|
|
|
771
801
|
url = "oracle+cx_oracle://{}:{}@{}:{}/{}?charset=utf8mb4".format(
|
|
772
802
|
conn_info.user, conn_info.password, conn_info.host, conn_info.port,
|
|
773
803
|
conn_info.db_name)
|
|
804
|
+
elif db_type == "dm":
|
|
805
|
+
url = 'dm+dmPython://{}:{}@{}:{}'.format(
|
|
806
|
+
conn_info.user, conn_info.password, conn_info.host, conn_info.port)
|
|
774
807
|
else:
|
|
775
808
|
raise ImportError("UNSUPPORTED DB TYPE")
|
|
776
809
|
try:
|
|
777
810
|
sqlalchemy = importlib.import_module("sqlalchemy")
|
|
778
811
|
except ImportError:
|
|
779
812
|
raise ImportError(f"sqlalchemy is not exist,run:pip install sqlalchemy")
|
|
780
|
-
|
|
781
|
-
|
|
813
|
+
params = conn_info.params
|
|
814
|
+
if not params:
|
|
815
|
+
params = dict()
|
|
816
|
+
echo = params.pop("echo", True)
|
|
817
|
+
pool_recycle = params.pop("pool_recycle", 3600)
|
|
818
|
+
max_overflow = params.pop("max_overflow", 0)
|
|
819
|
+
pool_timeout = params.pop("pool_timeout", 10)
|
|
820
|
+
pool_pre_ping = params.pop("pool_pre_ping", False)
|
|
821
|
+
if conn_info.db_name and db_type=="dm":
|
|
822
|
+
if "connect_args" not in params:
|
|
823
|
+
params["connect_args"] = {"schema": conn_info.db_name}
|
|
824
|
+
else:
|
|
825
|
+
params["connect_args"]["schema"] = conn_info.db_name
|
|
826
|
+
|
|
827
|
+
engine = sqlalchemy.create_engine(url, echo=echo,
|
|
782
828
|
pool_size=conn_info.min_size,
|
|
783
|
-
pool_recycle=
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
pool_timeout=conn_info.params.get("pool_timeout",
|
|
788
|
-
10) if conn_info.params else 10,
|
|
789
|
-
pool_pre_ping=conn_info.params.get("pool_pre_ping",
|
|
790
|
-
True) if conn_info.params else True)
|
|
829
|
+
pool_recycle=pool_recycle,
|
|
830
|
+
max_overflow=max_overflow,
|
|
831
|
+
pool_timeout=pool_timeout,
|
|
832
|
+
pool_pre_ping=pool_pre_ping)
|
|
791
833
|
return engine
|
|
792
834
|
|
|
793
835
|
@staticmethod
|
|
@@ -939,6 +981,12 @@ def get_pool(conn_info: ConnectionInfo):
|
|
|
939
981
|
else:
|
|
940
982
|
return run_sync(Pool.sync_create_clickhouse_pool(conn_info)), conn_info
|
|
941
983
|
|
|
984
|
+
elif conn_info.dialect == "dm":
|
|
985
|
+
if conn_info.async_enable:
|
|
986
|
+
return run_sync(Pool.sync_create_dm_pool(conn_info)), conn_info
|
|
987
|
+
else:
|
|
988
|
+
return run_sync(Pool.sync_create_dm_pool(conn_info)), conn_info
|
|
989
|
+
|
|
942
990
|
elif conn_info.dialect == "sqlalchemy":
|
|
943
991
|
if conn_info.async_enable:
|
|
944
992
|
return run_sync(Pool.create_sqlalchemy_pool(conn_info)), conn_info
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.0.10"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lesscode-database
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.10
|
|
4
4
|
Summary: lesscode_database是数据库连接工具包
|
|
5
5
|
Author: navysummer
|
|
6
6
|
Author-email: navysummer@yeah.net
|
|
@@ -57,13 +57,15 @@ db_options.conn_list = [
|
|
|
57
57
|
ConnectionInfo(dialect="redis", name="redis", host="127.0.0.1", port=6379, user=None,
|
|
58
58
|
password=None, db_name=1, enable=False, async_enable=True),
|
|
59
59
|
# sqlalchemy 异步支持mysql,postgresql,tidb,ocean_base,doris;
|
|
60
|
-
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle
|
|
60
|
+
# 同步支持mysql,postgresql,tidb,ocean_base,doris,sqlite3,mssql,oracle,dm
|
|
61
61
|
ConnectionInfo(dialect="sqlalchemy", name="sqlalchemy", host="127.0.0.1", port=3306, user="root",
|
|
62
62
|
password="root", db_name="test", enable=False, async_enable=False, params={"db_type": "mysql"}),
|
|
63
63
|
ConnectionInfo(dialect="neo4j", name="neo4j", host="127.0.0.1", port=7687, user="neo4j",
|
|
64
64
|
password="neo4j", db_name=None, enable=False, async_enable=True),
|
|
65
65
|
ConnectionInfo(dialect="clickhouse", name="clickhouse", dsn="clickhouse://localhost", host="127.0.0.1", port=9000,
|
|
66
66
|
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
67
|
+
ConnectionInfo(dialect="dm", name="dm", dsn=None, host="127.0.0.1", port=5236,
|
|
68
|
+
user="default", password="", db_name='', enable=True, async_enable=False),
|
|
67
69
|
|
|
68
70
|
]
|
|
69
71
|
|
|
@@ -358,4 +360,12 @@ async def async_esapi_test():
|
|
|
358
360
|
loop = asyncio.get_event_loop()
|
|
359
361
|
loop.run_until_complete(async_esapi_test())
|
|
360
362
|
|
|
363
|
+
|
|
364
|
+
# 达梦数据库 同步测试
|
|
365
|
+
with DsHelper("dm").pool.dedicated_connection() as conn:
|
|
366
|
+
with conn.cursor() as cursor:
|
|
367
|
+
cursor.execute('SELECT 1')
|
|
368
|
+
print(cursor.fetchall())
|
|
369
|
+
|
|
370
|
+
|
|
361
371
|
```
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.0.9"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database/dynamic_import_package.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{lesscode_database-0.0.9 → lesscode_database-0.0.10}/lesscode_database.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|