您现在的位置是:群英 > 开发技术 > Python语言
Python与Oracle怎样进行交互操作
Admin发表于 2022-05-17 17:06:33993 次浏览
关于“Python与Oracle怎样进行交互操作”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“Python与Oracle怎样进行交互操作”吧。
目录
  • 1、安装准备
  • 2、instantclient的安装说明
  • 3、instantclient安装步骤
  • 4、还有几个需要注意的地方
    • 1)设置NLS_LANG环境变量:解决中文乱码
    • 2)关于TNS_ADMIN环境变量的说明
    • 3)关于python中,cx_Oracle驱动包的安装
  • 5、python操作Oracle数据库
    • 1)python连接数据库的3种方式
    • 2)查询数据…查

1、安装准备

① 正确安装好Oracle数据库(我的电脑是64位的,但是我最开始安装的是Oracle32。因此,你要是有64位的安装包,你就安装64位的。)

② 正确安装好python(注意:这个最好是安装64位的,使用32位的python操作Oracle数据库,会出现很多问题。)

③oracle数据库客户端instantclient下载安装和环境变量配置(注意:现在电脑一般都是64位的,由于python安装的是64位的,因此instantclient也是安装64位的。)

注意:需要Oracle安装包,可以留言说明!!!

2、instantclient的安装说明

instantclient下载地址:https://www.jb51.net/database/572638.html

版本选择:你可以选择版本11或者版本12这样的高版本,进行下载即可。

3、instantclient安装步骤

① 下载好instantclient后,进行解压;

注意:这个解压位置不要随便放置,而是放在Oracle安装目录下的product目录下(这个放在product的直接子目录下。)

② 配置instantclient的环境变量;

③ 将instantclient解压目录下的oraociei11.dll、oraocci11.dll、oci.dll文件复制到python安装目录的Lib/site-packages下;
instantclient的解压目录:

python安装目录下的Lib/site-packages目录:

4、还有几个需要注意的地方

1)设置NLS_LANG环境变量:解决中文乱码

当读取的Oracle数据库中的某张表中含有中文,就会出现中文乱码的问题,因此需要我们设置这个环境变量,来解决Oracle中的中文乱码问题。

NLS_LANG,全称是National Language Support(NLS),它是一个环境变量 ,用于定义语言,地域以及字符集属性。对于非英语的字符集 ,NLS_LANG的设置就非常重要。

① 直接在Windows中的CMD黑窗口中,设置NLS_LANG环境变量;

 C:\Users\AA>set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

② 直接在代码中,添加代码设置NLS_LANG环境变量(常用的方式);

import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

注意:上面两种方式设置NLS_LANG环境变量,都仅对当前会话窗口有效,一旦关闭当前窗口,又会恢复至原来的状态,这样恰恰是我们想要的。其实,也可以永久修NLS_LANG环境变量,但是不建议这么做,因为这样会带来一系列的问题。

2)关于TNS_ADMIN环境变量的说明

  关于这个环境变量的设置,我提供一个链接供你们参考,因为目前就学习来看我还没有用到这个:
  https//www.jb51.net/article/226529.htm

3)关于python中,cx_Oracle驱动包的安装

  对于我来说,我是直接使用"pip insatll cx_Oracle"就安装成功了。
  如果你不成功,你可以使用如下链接,下载对应版本的安装包:
  https://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_oracle
  如果还是不会,再提供下面一个安装说明,希望对你有帮助:
       https://www.jb51.net/article/226537.htm  

5、python操作Oracle数据库

  需要注意的是:当配置好所有的东西之后,其实用python操作Oracle和操作MySQL,在写代码上基本上大同小异。
  因此在学习下面的代码之前,你可以参考我之前写的python操作MySQL数剧库的文章

1)python连接数据库的3种方式

连接语法:cx_Oracle.connect(‘username/password@host/监听')

host代表你的Oracle服务器所在的地址,因为我的Oracle服务器就安装在本机上,因此我这里可以写localhost,我可以写主机名DESKTOP-V4LKB10,我还可以写主机IP

① 用户名、密码和监听写在一起

import cx_Oracle
db = cx_Oracle.connect('scott/a123456@DESKTOP-V4LKB10:1521/orcl')

② 用户名、密码和监听分开写

import cx_Oracle
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")

③ 配置监听并连接

import cx_Oracle
moniter = cx_Oracle.makedsn('192.168.2.1',1521,'orcl')
db = cx_Oracle.connect('scott','a123456',moniter)

2)查询数据…查

fetchone():一次获取一条记录

import cx_Oracle
# 注意:一定要加下面这两行代码,负责会中文乱码;
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor()
cursor.execute('select count(*) from emp1')
aa = cursor.fetchone()
print(aa)
cursor.execute('select ename,deptno,sal from emp1')     
for i in range(aa[0]):
    a,b,c = cursor.fetchone()
    d = "我的名字叫{},所在部门是{},工资是{}美元".format(a,b,c)
    display(d)
db.close()

截取部分结果如下:

fetchall():一次获取所有记录

import cx_Oracle
# 注意:一定要加下面这两行代码,负责会中文乱码;
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor()
cursor.execute('select ename,deptno,sal from emp1')    
aa = cursor.fetchall()
# print(aa)
for a,b,c in aa:
    d = "我的名字叫{},所在部门是{},工资是{}美元".format(a,b,c)
    display(d)
db.close()

截取部分结果如下:

③ 使用pandas中的read_sql()方法,将提取到的数据直接转化为DataFrame进行操作

import cx_Oracle
import pandas as pd
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor()
df1 = pd.read_sql("select * from emp where deptno=20",db)
display(df1)
df2 = pd.read_sql("select * from emp where deptno=30",db)
display(df2)

结果如下:

注意:由于其他操作和python操作MySQL类似,这里就不再赘述,你们可以自行下去尝试。


到此这篇关于“Python与Oracle怎样进行交互操作”的文章就介绍到这了,感谢各位的阅读,更多相关Python与Oracle怎样进行交互操作内容,欢迎关注群英网络资讯频道,小编将为大家输出更多高质量的实用文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: Python Oracle
相关信息推荐
2022-01-14 18:36:23 
摘要:PHP中怎样实现其他进制转换十进制?对于进制转化并不难,下面就给大家来介绍一下,二进制数转十进制数、八进制数转换为十进制数、十六进制数转换为十进制数以及任意进制之间转换的方法,实现代码如下,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
2022-08-02 17:47:01 
摘要:本文由go语言教程栏目给大家介绍Golang1.16怎么使用embed加载静态文件 ,希望对需要的朋友有所帮助!
2022-05-06 18:09:24 
摘要:微信小程序如何封装原生请求?如何调用接口?下面本篇文章给大家介绍一下原生微信小程序封装请求,并优雅调用接口的方法,希望对大家有所帮助!
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部