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.5.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.5-py3-none-any.whl (6.4 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ns_pydm-0.0.5.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.5.tar.gz
Algorithm Hash digest
SHA256 801cc8e30724b7f761745e86a0b366b4f500c337bd7da0cabbb5a50a1dce7e68
MD5 44daf853837329d8135267dba5c06873
BLAKE2b-256 cdd9bf1d4e421d8b559a6c0f5b36bea6350dccd2bb8c3148831f70e0b7957a03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ns_pydm-0.0.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 057428e3f6b67225929460fcd405c53d5cf55495548a2f3a4af562ab50e415b5
MD5 479df4fe3bb729667fb4d5a9e351c6f1
BLAKE2b-256 d006007a52a4a0f1f4d4a94a88f5a276cfa689eb2826ca5aca02bbcae5a9a498

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