lesscode-database 0.0.9__py3-none-any.whl → 0.0.10__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.

@@ -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
- engine = sqlalchemy.create_engine(url, echo=conn_info.params.get("echo",
781
- True) if conn_info.params else True,
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=conn_info.params.get("pool_recycle",
784
- 3600) if conn_info.params else 3600,
785
- max_overflow=conn_info.params.get("max_overflow",
786
- 0) if conn_info.params else 0,
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
@@ -1 +1 @@
1
- __version__ = "0.0.9"
1
+ __version__ = "0.0.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lesscode-database
3
- Version: 0.0.9
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,14 +1,14 @@
1
1
  lesscode_database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- lesscode_database/connect_pool.py,sha256=_RdmtKmacohFP2FwEet_4HY05Vr5zGlwj8lkFnfmK64,44572
2
+ lesscode_database/connect_pool.py,sha256=6iFUU8w4sNs2HgGiH5M0PZI7wuEUnlNgzx-hT65USyo,46467
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
6
  lesscode_database/ds_helper.py,sha256=W3VrTe_l0mGX0uEbN7UI6NlQbruLpr2WXgO7AexzQ-k,4845
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
- lesscode_database/version.py,sha256=46Yjk3fz9o8aTN8E95McnzpJcjGzVJmHmQqUZ5mXzfc,22
10
- lesscode_database-0.0.9.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
11
- lesscode_database-0.0.9.dist-info/METADATA,sha256=v1FcYg9dFAyZ4-U_t34STUYQWhF4QpEabH0aQRfk1jg,11692
12
- lesscode_database-0.0.9.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
13
- lesscode_database-0.0.9.dist-info/top_level.txt,sha256=h6cg13be6kkDfNaX9nWeDcfducTb5bKG5iYRO2JPmAM,18
14
- lesscode_database-0.0.9.dist-info/RECORD,,
9
+ lesscode_database/version.py,sha256=-nNlMKS9nph3FR78_ZG9RGKrbxseeNp2K6nMr0pVGaU,23
10
+ lesscode_database-0.0.10.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
11
+ lesscode_database-0.0.10.dist-info/METADATA,sha256=w3pRRvHPOi0bcIoGKVKlmNKtVIWpYFyrIXflWvEL5Ns,12066
12
+ lesscode_database-0.0.10.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
13
+ lesscode_database-0.0.10.dist-info/top_level.txt,sha256=h6cg13be6kkDfNaX9nWeDcfducTb5bKG5iYRO2JPmAM,18
14
+ lesscode_database-0.0.10.dist-info/RECORD,,