最近小豆君在做python连接Oracle数据库时发现有很多坑,网上搜到的也是不够详细,故整理一下供大家参考,避免入坑
1 场景
你已经在服务器上创建了Oracle数据库
现在要用python去连接Oracle
2 连接Oracle基本知识
我们使用python库cx_Oracle来连接Oracle
Oracle分服务端和客户端、服务端又分监听程序和数据库实例
所以,当我们在本地开发时,需要安装cx_Oracle、OracleClient
3 部件下载
我们确认的顺序是,一定要注意,如果你的python和OracleClient要都是32位的,64位的同理。
也就是说,只能有以下两种组合情况:
python_x86 => cx_Oracle(32和64都可以) => OracleClient_x86
python_x64 => cx_Oracle(32和64都可以) => OracleClient_x64
python我就不说了,直接到官网下
2.1 cx_Oracle
python3.6或更高版本,直接使用pip下载最新的即可
方法1: pip安装:python -m pip install cx_Oracle --upgrade
如果是python2,你需要下7.3版本的
方法2:下载其它版本 https://pypi.org/project/cx-Oracle/#history
要选择对应python版本的包下载
pip install xxx.whl
2.2 Oracle Instant Client
Free tools and libraries for connecting to Oracle Database
虽然oracle官网有如下介绍:
版本21客户端库可以连接到Oracle数据库12.1或更高版本。版本19、18和12.2的客户端库可以连接到Oracle数据库11.2或更高版本。12.1版本的客户端库可以连接到Oracle数据库10.2或更高版本。版本11.2客户端库可以连接到Oracle数据库9.2或更高版本。
但我还是推荐大家版本最好一一对应,如你要连接oracle11,则下载
下载的文件解压,复制oci,oraocci11,oraociei11的3个DLL粘贴到你的Python目录的Lib/site-packages文件夹下面。(粘贴原因:不需要配置环境变量) ,否则你需要配置ORACLE_HOME环境变量
4 测试代码
def test(): import cx_Oracle # 去掉以下注释则不需要拷贝动态库 # import os # os.environ["ORACLE_HOME"] = r'F:\soft\setup\oracle\instantclient_11_2' user = 'scott' password = 'scott' host = '192.168.153.134:1521' service_name = 'helowinXDB' conn_str = f"{user}/{password}@{host}/{service_name}"# ('system/system@172.24.0.64:1521/helowinXDB') connect = cx_Oracle.connect(conn_str) cursor = connect.cursor() cursor.execute('select * from mytesttable') print(cursor.fetchall()) test()
参考链接:
喜欢本文的大家就点个赞吧,同时也欢迎关注
微信号:小豆君编程分享 (关注后,可加入小豆君交流群进行学习交流,也可第一时间看到最新文章)
头条号:小豆君编程分享