51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2095|回复: 2
打印 上一主题 下一主题

Python 连接 oracle 数据库总结

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-4-2 15:20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近公司要求使用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版本不兼容的问题,其实归
根揭底还是编码的问题啦!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 00:29 , Processed in 0.065398 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表