最初我的Python用的32位的,网上有人说只要Python和instantclient位数一致就行,但是我用32位instantclient,加了环境变量,将dll文件扔到Python根目录下提示找不到所需的模块,之后我将Python换成64位,更改完环境变量并添加dll文件到Python根目录后连接成功。我想,应该是Oracle、Python、instantclient三者的版本应该一致吧。
目录
6.将instantclient中dll文件拷贝到Python根目录
1.查看Oracle版本
SELECT * FROM V$VERSION;
2.查看Python版本
我这里是重装Python后的版本
3.下载对应版本的instantclient
网址:Oracle Instant Client Downloads
这里下载64位的。进入64位下载页面后下载对应版本的Basic Package压缩包即可。
或者下载:instantclient_19_10
4.修改instantclient配置
将解压后的文件夹放在指定位置,在instantclient根目录下新建文件夹及文件:network\ADMIN\tnsnames.ora
在tnsnames.ora中写入以下内容,其中HOST的值改为Oracle服务端的IP。
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
5.添加环境变量
在系统环境变量Path中添加自己instantclient的存放路径。
6.将instantclient中dll文件拷贝到Python根目录
7.运行Python脚本
以上步骤都完成的话,需要重新打开编译器再运行脚本。正常情况下应该就可以连接数据库了。下面记录一下Python脚本相关内容。
安装cx_Oracle模块:
pip install cx_Oracle
Python连接Oracle:
import cx_Oracle
class Aboutdb:
def resetstatus(self):
# 连接到一个给定的数据库
conn = cx_Oracle.connect(user="Oracle用户名", password="Oracle密码", dsn='127.0.0.1/数据库名')
# 建立游标,用来执行数据库操作
cursor = conn.cursor()
# 执行SQL命令
cursor.execute("select * from tablename")
# 获取SELECT返回的列表
rows = cursor.fetchall()
print(rows)
# 关闭游标
cursor.close()
# 关闭数据库连接
conn.close()
if __name__ == '__main__':
c = Aboutdb()
c.resetstatus()