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
Release history Release notifications | RSS feed
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.10.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.10.tar.gz.
File metadata
- Download URL: ns_pydm-0.0.10.tar.gz
- Upload date:
- Size: 6.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f054240f1a8a13f125de0c03739c7ef70be823bde1f51e9a5a21ddc7f0f8fce2
|
|
| MD5 |
4b35a23deaab4d090ec3710b2f39f1ea
|
|
| BLAKE2b-256 |
9a9da349256d9c31aff3fe7438dbab7f7283ecb5fe29708800b3036368ffde7f
|
File details
Details for the file ns_pydm-0.0.10-py3-none-any.whl.
File metadata
- Download URL: ns_pydm-0.0.10-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.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daa695ab6bc45e647a8adc559f5679bb95398c1997c684e974964540f48606c2
|
|
| MD5 |
7c9d3436440c479e8b471e9b76106670
|
|
| BLAKE2b-256 |
d6fb72354f1843da347c78b97b1d91b7769efc072b614c7dc53fad28af45d89b
|