官网说明:https://www.oracle.com/database/technologies/appdev/python/quickstartpython.html
Windows通过python3连接OracleDB(无需配置环境变量)
首先获取Oracle Cloud客户凭证的包文件:Wallet.zip(按OracleCloud上说明获取),以下都按64位软件安装,因为代码中有包的指向语句,因此无需配置环境变量
1.安装python3.x:
https://www.python.org/downloads/windows/
2.安装cx_Oracle:
python -m pip install cx_Oracle --upgrade --user
如果出现错误,请尝试升级pip解决:
python -m pip install --upgrade pip
3.下载Oracle Instant Client 基础包:
可以下载Basic Package版就可以
https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
解压文件到C:\Oracle\instantclient_19_11,在里面建立两层文件夹:network\admin(network文件夹里面在建立个admin文件夹),后面用于存放Oracle Cloud的连接必要凭证文件
4.将开始获得的Wallet.zip文件解压,将Wallet文件夹里面的所有文件移动到刚创建的network下的admin目录里
5.创建并运行一个python最简单程序,出现查询结果“x”,则成功接上数据库:
出现错误问题可能:
a.Python位数或版本跟oracleclient不匹配
b.没正确有安装cx_Oracle包
c.没有正确下载配置Oracle Instant Client基础包
d.没有放对Wallet.zip包里面的文件位置
e.代码中指向的Oracle Instant Client包路径不对
f.错误的OracleCloudDB的账号密码或Wallet信息
Test.py
import cx_Oracle cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_9") #第三步包的位置 connection = cx_Oracle.connect(user="XXXX", password="XXXX", dsn="XXX_dbhigh") #dsn连接方式在wallet的tnsnames.ora可以找到 cursor = connection.cursor() for row in cursor.execute('select * from dual'): print(row)
Linux通过Python3连接OracleDB(需配置环境变量)
首先获取Oracle Cloud客户凭证的包文件:Wallet.zip(按OracleCloud上说明获取),以下都按64位软件安装,因为代码修改环境变量的方法无效,因此需配置环境变量
1.安装python3.x:
sudo yum install -y python3
2.安装cx_Oracle
python3 -m pip install cx_Oracle --upgrade --user
3.安装Instant Client
a.配置Instant Client存储库:
sudo yum install oracle-instantclient-release-el7
b.安装basic包:
sudo yum install oracle-instantclient-basic
4.如果完成第三步,应该会出现类似/usr/lib/oracle/19.10/client64/lib/network/admin/目录,然后将Wallet.zip里面的文件,解压并移动到admin文件夹中:
sudo cp Wallet_*.zip /usr/lib/oracle/21/client64/lib/network/admin/ sudo sh -c 'cd /usr/lib/oracle/21/client64/lib/network/admin/ && unzip -B Wallet_*.zip'
5.有些情况需要配置环境变量,在控制台中输入:
export TNS_ADMIN=/usr/lib/oracle/21/client64/lib/network/admin/
export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib
6.创建并一个python最简单程序,在控制台输入python3 Test.py运行程序,出现查询结果“x”,则成功接上数据库:
Test.py
import cx_Oracle connection = cx_Oracle.connect(user="XXXX", password="XXXX", dsn="XXX_dbhigh") #dsn连接方式在wallet的tnsnames.ora可以找到 cursor = connection.cursor() for row in cursor.execute('select * from dual'): print(row)