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.8.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.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4a60a8adcc54ad841ea3b4a9d06edd7e9b4defee771a418d790197f89941d26
|
|
| MD5 |
c68c9297cbb27adfb56f4e32d2e63799
|
|
| BLAKE2b-256 |
85024685abddc8101ee4eef04943d2c34c2859b068deea3c11a607024db40fa3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68af3e4147ef47261e433954f7dabab42cb1bb89e736ac978107f77f83a8a6db
|
|
| MD5 |
62e45a5787b1e658f353fb04bd9a0253
|
|
| BLAKE2b-256 |
167f5da88afa8dca10fb1afead3808149e11202639a2d5ea171238269526d9fa
|