windows下python3连接Oracle数据库
第一次利用PyCharm连接Oracle数据库,遇到些bug,最终终于成功了!!!
一.Oracle数据库与python安装
注意系统版本,python版本,oracle客户端的版本,cx_Oracle的版本
以下以我的电脑为例:
Python版本:
Python 3.6.7 (v3.6.7:6ec5cf24b7, Oct 20 2018, 13:35:33) [MSC v.1900 64 bit (AMD64)] on win32
cx_Oracle版本:
cx_Oracle-5.3-11g.win-amd64-py3.6-2.exe
instantclient版本:
instantclient-basic-windows.x64-18.3.0.0.0dbru.zip
敲黑板划重点:
版本位数对应,都是64位;
cx_Oracle和python版本对应,都是3.6;
二.下载PyCharm 配置数据库连接环境
问题一: import cx_Oracle
ModuleNotfoundError: No module named ’cx_Oracle’
解决方法: 添加新的Project Interpreter
虚拟环境下,安装了全局python包。
Ctrl+alt+s,调出settings,左边找到project-project interpreter,选择全局python的位置。点击Project Interpreter右侧向下的小三角,点击Show All…
点击右侧 + 号
选择 Exiting environment
点击右侧 …
找到python位置, 可用cmd 寻找
将Interpreter改为python位置目录
Interpreter:C:\Users\quant\AppData\Local\Programs\Python\Python36\python.exe
然后OK
再回到Project interpreter,换成刚刚新添加的。
更换以后在下方显示的所有包中查看是否有cx_Orcale.如果有的话,点击apply。就可以成功的import oracle了!
问题二:ImportError: DLL load failed: 找不到指定的模块
instantclient_18_3 所在的目录添加到环境变量,但是环境变量有时没有立即生效,可以复制 oci.dll(版本也要正确)到 \Python36\Lib\site-packages 目录下。
这时又出现问题:Unable to acquire Oracle environment handle
复制 oci.dll 依赖的 dll: oraociei11.dll,ocijdbc11.dll 到 \Python36\Lib\site-packages 目录下。
如果实在不清楚的小可爱们:
将 instantclient_18_3 目录下的 dll 都复制到 \Python36\Lib\site-packages 目录下即可。
我这里下的版本是instantclient_18_3 和Python36,根据自己版本不同修改即可。
三. 使用数据库
数据库连接:
[连接名]
username = 用户名
password = 口令
Server = 主机名
PortNumber = 端口
instance = 服务名
conn = cx_Oracle.connect(username + '/'+ password + '@'+ Server + ':'+ PortNumber + '/'+ instance)
cur = conn.cursor()
sql = "select * form 表名 where... and ...order by"
cur.execute(sql)
rs = cur.fetchall() //获取所有内容
就可以成功连接数据库啦