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.7.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.7.tar.gz.
File metadata
- Download URL: ns_pydm-0.0.7.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 |
6ce2a17cc1e407894fbc13993c1e2c5442c9d5bccea80b97adf7235935c15e09
|
|
| MD5 |
9c2eb6e7b636592a5d8fb2169d4c2a38
|
|
| BLAKE2b-256 |
5ab1070334cddc564c62b7ef96a7f5eea5002095aa9aedfa94ecfb8cc1f62f67
|
File details
Details for the file ns_pydm-0.0.7-py3-none-any.whl.
File metadata
- Download URL: ns_pydm-0.0.7-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 |
9f7c9d74a2af2192ea6e3d829e3cac302cc501fbccc0f5c5e26ec943a4ed3cc5
|
|
| MD5 |
2c57e37339186521a3ef91d47c43628b
|
|
| BLAKE2b-256 |
d94fcffc85c22544a75e575bf251d7be6aff178edc76896ce99a5999a8954e28
|