Skip to main content

Dameng (DM) DB-API 2.0 driver implemented on top of JDBC via JPype

Project description

ns-pydm

基于 JDBC + JPype 的达梦(DM)Python 驱动,提供 DB-API 2.0 风格接口,跨平台使用。

特性

  • DB-API 2.0 风格:connect() / Connection / Cursor / commit() / rollback()
  • 参数绑定:支持 ? 占位符;兼容把 SQL 中的 %s(非引号区域)自动转换为 ?
  • 内置达梦 JDBC 驱动 Jar:安装 Python 包即可使用(仍需本机存在 Java 运行时)
  • 自动选择 Jar:根据 java -version 探测的 Java 主版本选择对应驱动

依赖

  • Python 3.7+
  • 运行环境需要安装 Java(JRE/JDK),并确保 java 在 PATH 中或已配置 JAVA_HOME

安装

pip install ns-pydm

快速开始

import nspydm

conn = nspydm.connect(
    user="SYSDBA",
    password="SYSDBA",
    server="127.0.0.1",
    port=5236,
)

cur = conn.cursor()
cur.execute("select ? as x", [1])
print(cur.fetchone())
conn.close()

参数绑定

推荐写法(JDBC 原生):使用 ?

cur.execute("select ? as x, ? as y", [1, "hello"])

兼容写法:使用 %s(会转换为 ?

cur.execute("select %s as x, %s as y", [1, "hello"])

事务与自动提交

conn = nspydm.connect(..., autocommit=False)
cur = conn.cursor()
cur.execute("insert into t(a) values(?)", [1])
conn.commit()

也可以通过属性开关:

conn.autocommit = True

Schema 切换示例

cur.execute("set schema your_schema")

连接参数

  • connect(user, password, server, port, dsn, url, autocommit, properties, jars, driver_class)
  • url 优先级最高,支持直接传入 jdbc:dm://host:port 形式
  • dsn 传入 host:port 时会自动拼接为 jdbc:dm://{dsn}

Jar 选择与 Java 版本识别

  • 默认会通过 java -version 探测 Java 主版本,并自动选择内置的驱动 Jar:
    • Java 6 -> DmJdbcDriver6.jar
    • Java 7 -> DmJdbcDriver7.jar
    • Java 8/9/10 -> DmJdbcDriver8.jar
    • Java 11+ -> DmJdbcDriver11.jar
  • 如需自定义或覆盖默认选择:
    • 环境变量:DM_JDBC_JAR=/abs/path/to/DmJdbcDriver8.jar
    • 代码传参:connect(..., jars=["/abs/path/to/DmJdbcDriver8.jar"])

常见问题

  1. 提示找不到 java
    • 确认已安装 JRE/JDK,并保证 java -version 能在命令行执行
  2. 连接时报错但信息不全
    • 驱动底层异常会被映射为 DB-API 异常(例如 OperationalError),可直接打印异常信息排查

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ns_pydm-0.0.8.tar.gz (6.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ns_pydm-0.0.8-py3-none-any.whl (6.4 MB view details)

Uploaded Python 3

File details

Details for the file ns_pydm-0.0.8.tar.gz.

File metadata

  • Download URL: ns_pydm-0.0.8.tar.gz
  • Upload date:
  • Size: 6.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for ns_pydm-0.0.8.tar.gz
Algorithm Hash digest
SHA256 d4a60a8adcc54ad841ea3b4a9d06edd7e9b4defee771a418d790197f89941d26
MD5 c68c9297cbb27adfb56f4e32d2e63799
BLAKE2b-256 85024685abddc8101ee4eef04943d2c34c2859b068deea3c11a607024db40fa3

See more details on using hashes here.

File details

Details for the file ns_pydm-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: ns_pydm-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 6.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for ns_pydm-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 68af3e4147ef47261e433954f7dabab42cb1bb89e736ac978107f77f83a8a6db
MD5 62e45a5787b1e658f353fb04bd9a0253
BLAKE2b-256 167f5da88afa8dca10fb1afead3808149e11202639a2d5ea171238269526d9fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page