51Testing软件测试论坛

标题: Python 连接 oracle 数据库总结 [打印本页]

作者: 老白的释然    时间: 2018-4-2 15:20
标题: Python 连接 oracle 数据库总结
最近公司要求使用python查询oracle数据库,下面把网上的资料整理一下:
1)python安装cx_Oracle模块,可以下载离线包,最好在线pip 安装。
2)安装oracle客户端:地址:http://www.oracle.com/technetwor ... tant-client/index-0
97480.html
这里有各种版本,结合自己的机器下载相应版本就好。我下载的是32位的basic11版本(注意要和自己python
的版本相符,我自己电脑里面有python2.7(32位)和python3.4(64位));将解压好的文件夹路径加入环
境变量(我的路径是:E:\instantclient_11_2),并且在该文件夹中新建一个文件tnsnames.ora,内容是:
  1. jasonChang =

  2. (DESCRIPTION =

  3. (ADDRESS_LIST =

  4. (ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.201.118)(PORT = 1521))

  5. )

  6. (CONNECT_DATA =

  7. (SERVER = DEDICATED)

  8. (SERVICE_NAME = tkpi)

  9. )

  10. )
复制代码

3)代码连接数据库:
import cx_Oracle #引用模块cx_Oracle
conn=cx_Oracle.connect('tkinsure','ins185','10.137.146.5:1521/tkpi') #连接数据库
rs=conn.cursor() #获取cursor
rs.execute('select sudo from tickl') #使用cursor进行各种操作
result = rs.fetchall()
print(result)
rs.close() #关闭cursor
conn.close()

备注:如果在代码中遇到了莫名其妙的错误,请查看oracle客户端的版本是不是适合python版本,或者
python和cx_Oracle 是不是合适,因为我在运行代码的时候发现了一个错误:
conn = cx_Oracle.connect('tkinsure','ins185','10.137.146.5:1521/ursl')
UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 82-83: invalid continuation byte,乍一
看是编码的问题,实际上是oracle客户端版本(instantclient_11_2)和python版本不兼容的问题,其实归
根揭底还是编码的问题啦!


作者: 海海豚    时间: 2018-4-2 15:48
谢谢分享~
作者: 梦想家    时间: 2018-4-4 15:43





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2