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.6.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.6.tar.gz.
File metadata
- Download URL: ns_pydm-0.0.6.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 |
890f24e7a9fbcd22587b51ffbf16af85687ea948d6782c7948cc8ebfbb845bed
|
|
| MD5 |
05327e4262fc9ca2f1462c04906e446f
|
|
| BLAKE2b-256 |
8dbf65668aaea14d31c11cd6ebb8bb98da2484e46a56653698068b98c64013fa
|
File details
Details for the file ns_pydm-0.0.6-py3-none-any.whl.
File metadata
- Download URL: ns_pydm-0.0.6-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 |
a20b3e515f20c34462360791a92dd1aeb981dd111e61b8992c9d00fd9c62b73c
|
|
| MD5 |
d4e9530dbe2d3636e562c8ae910a6176
|
|
| BLAKE2b-256 |
7ddec617c8e8dab15b58a3c7babbd67085072d2f177d4d082e0156e249548af3
|