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
- Java 6 ->
- 如需自定义或覆盖默认选择:
- 环境变量:
DM_JDBC_JAR=/abs/path/to/DmJdbcDriver8.jar - 代码传参:
connect(..., jars=["/abs/path/to/DmJdbcDriver8.jar"])
- 环境变量:
常见问题
- 提示找不到
java- 确认已安装 JRE/JDK,并保证
java -version能在命令行执行
- 确认已安装 JRE/JDK,并保证
- 连接时报错但信息不全
- 驱动底层异常会被映射为 DB-API 异常(例如
OperationalError),可直接打印异常信息排查
- 驱动底层异常会被映射为 DB-API 异常(例如
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4f623661d46f85dcd6e3b0e811f5aad4cceed405efbf4b95a0539013a2856ce
|
|
| MD5 |
27b685853ef72d7111755740d61b7427
|
|
| BLAKE2b-256 |
52a1141419e4dff7bf9e15e80c78412c75ae4dac9748984676e10ca17f468d8d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
009765d4b33b03c13e433f37e26e44d5842eac1cc0ff022e1c5b44c33cd8cf48
|
|
| MD5 |
a6ddf5e312145a0f8e076a7a2bce64a1
|
|
| BLAKE2b-256 |
5e4ced34b24d6f5cb81858df4aed4eda3314994b12e8822ba9f8cf544a12f5cf
|