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

Uploaded Python 3

File details

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

File metadata

  • Download URL: ns_pydm-0.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 a4f623661d46f85dcd6e3b0e811f5aad4cceed405efbf4b95a0539013a2856ce
MD5 27b685853ef72d7111755740d61b7427
BLAKE2b-256 52a1141419e4dff7bf9e15e80c78412c75ae4dac9748984676e10ca17f468d8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ns_pydm-0.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 009765d4b33b03c13e433f37e26e44d5842eac1cc0ff022e1c5b44c33cd8cf48
MD5 a6ddf5e312145a0f8e076a7a2bce64a1
BLAKE2b-256 5e4ced34b24d6f5cb81858df4aed4eda3314994b12e8822ba9f8cf544a12f5cf

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