Running cx_Oracle under jython

本文讨论了使用Python在不同平台上访问Oracle数据库的问题。指出并非所有Python模块都能在各种Python实现中工作,例如cx_Oracle模块特定于Oracle客户端版本和操作系统。推荐在Jython环境中使用JDBC驱动来访问Oracle数据库,并介绍了zxJDBC模块简化JDBC调用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Not all modules that work with Python in CPython implementation will work on other implementations. If such module use system specific calls, or binds to some .dll/.so file it will not work on other Python implementation. cx_Oracle is one os such modules: it binds to Oracle client (there are cx_Oracle versions for various Oracle versions and various operational systems).

I think you should use JDBC driver if you want to access Oracle from Jython. Then you can use JDBC calls, or use zxJDBC Jython module that makes JDBC drivers available via DB API calls. I used both JDBC (with zxJDBC) and cx_Oracle in programs that can work from CPython and Jython. To see it in action look to my recipe to dump Oracle db schema to text

转载于:https://www.cnblogs.com/z1500592/p/5877743.html

### 使用 `cx_Oracle` 和 JDBC 进行数据库连接 需要注意的是,在 Python 中,`cx_Oracle` 是专门设计用来与 Oracle 数据库交互的原生库,并不直接支持通过 JDBC 来建立连接。对于希望利用 Java 的 JDBC 驱动程序来访问 Oracle 数据库的情况,通常是在 Java 应用环境中操作。 然而,如果确实有需求要在同一项目里混合使用这两种技术栈(即在同一应用中既使用 Python 又想借助于 JDBC),可以考虑采用 Jython 或者是调用外部进程的方式执行基于 JDBC 的 Java 程序[^1]。 当仅限于 Python 生态系统内部解决时,则应继续依赖 `cx_Oracle` 提供的功能来进行 Oracle 数据库的操作: ```python import cx_Oracle def connect_to_oracle(user, password, dsn): try: connection = cx_Oracle.connect( user=user, password=password, dsn=dsn ) print("Successfully connected to Oracle Database") cursor = connection.cursor() # 执行查询或其他操作... cursor.close() except cx_Oracle.DatabaseError as e: error, = e.args print(f"Database Error occurred: {error.message}") finally: if 'connection' in locals(): connection.close() # 关闭连接 if __name__ == "__main__": USER = "your_username" PASSWORD = "your_password" DSN = "localhost/orclpdb1" connect_to_oracle(USER, PASSWORD, DSN) ``` 对于某些特定版本的数据库服务器可能出现兼容性问题,比如遇到错误 DPY-3010 表明当前使用的 python-oracledb 版本可能无法支持所尝试连接的数据库服务端版本[^2]。此时建议查阅官方文档中的解决方案或者调整环境配置以匹配双方的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值