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数据库交互操作的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python3.6连接Oracle数据库的方法详解

    本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads 这里下载的是源码进行安装 [root@oracle oracle]# tar xf cx_Oracle-5.2.1.tar.gz [root@oracle oracle]# cd cx_Oracle-5.2.1 [root@oracle cx_Oracle-5

  • Python编程实战之Oracle数据库操作示例

    本文实例讲述了Python编程实战之Oracle数据库操作.分享给大家供大家参考,具体如下: 1. 要想使Python可以操作Oracle数据库,首先需要安装cx_Oracle包,可以通过下面的地址来获取安装包 http://cx-oracle.sourceforge.net/ 2. 另外还需要oracle的一些类库,此时需要在运行python的机器上安装Oracle Instant Client软件包,可以通过下面地址获得 http://www.oracle.com/technetwork/d

  • 教你使用Python连接oracle

    一.下载instant client 1.附链接:http://www.oracle.com/technetwork/topics/winx64soft-089540.html 提示:需要有oracle的账号才能下载嗷! 2.解压到某一位置并配置环境变量 二.cmd加载包 写在cmd里加载cx_Oracle包 pip install cx_Oracle 三.python连接oracle数据库 import cx_Oracle as cx con = cx.connect('用户名', '密码',

  • python连接oracle数据库实例

    本文实例讲述了python连接oracle数据库的方法,分享给大家供大家参考.具体步骤如下: 一.首先下载驱动:(cx_Oracle) http://www.python.net/crew/atuining/cx_Oracle/ 不过要注意一下版本,根据你的情况加以选择. 二.安装: 首先配置oracle_home环境变量 执行那个exe安装程序就可以了,它会copy一个cx_Oracle.pyd到Libsite-packages目录下. 如果是linux,执行 复制代码 代码如下: pytho

  • 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位的

  • python使用多线程查询数据库的实现示例

    一.背景: 当数据量过大时,一个程序的执行时间就会主要花费在等待单次查询返回结果,在这个过程中cpu无疑是处于等待io的空闲状态的,这样既浪费了cpu资源,又花费了大量时间(当然这里主要说多线程,批量查询不在考虑范围,总会存在不能批量查询的情况),在这种非密集型运算(及大量占用cpu资源)的情况下在python中无疑运用多线程是一个非常棒的选择. 二.知识点: 数据库连接池的运用及优势,python中多线程的运用,队列的运用 数据库连接池:限制了数据库的连接最大个数,每次连接都是可以重复使用的,

  • PHP使用PDO、mysqli扩展实现与数据库交互操作详解

    本文实例讲述了PHP使用PDO.mysqli扩展实现与数据库交互操作.分享给大家供大家参考,具体如下: 数据库 在我们开发php时,可能有人已经学习了php数据库的连接交互,也可能正准备学习.如今,按照php的发展趋势,mysql扩展已经停止开发,在以后的发展中可能被淘汰,如mysql->query(),mysql->connect()等以后可能就无法使用.所以我们要尽量使用PDO和mysqli扩展. PDO 基本操作如下: <?php // PDO + MySQL $servernam

  • Python opencv应用实现图片切分操作示例

    目录 说明 操作说明 代码 切换效果 说明 之前下载来zip包的漫画,里面的图片都是两张一起的: 但是某些漫画查看软件不支持自动分屏,看起来会比较不舒服,所以只能自己动手来切分. 操作说明 Python有不少的库支持图片操作,其中比较著名的一个是OpenCV. OpenCV是一个跨平台的计算机视觉库,Python下有它的接口实现. Python默认不带OpenCV,所以需要先用pip下载: OpenCV功能强大,这里用来做图片的切分其实是牛刀小试. 关于OpenCV的功能,这里不多介绍,有兴趣的

  • MySQL数据库约束操作示例讲解

    目录 一.约束是什么 二.约束的具体操作 Not NULL UNIQUE 约束的组合使用 PRIMARY KEY DEFAULT FOREIGN KEY 一.约束是什么 约束就是,在创建表的时候,对表设置一些规则,只有满足这些规则,才可以插入数据,我们把这些规则叫做约束 常见的约束有: 约束类型 规则 Not Null 指定某列不能存储NULL值 UNIQUE 保证某列的每行必须有唯一的值 DEFAULT 给没有赋值的列赋默认值 PRIMARY KEY Not NULL 与 UNIQUE的结合,

  • python使用pymongo与MongoDB基本交互操作示例

    本文实例讲述了python使用pymongo与MongoDB基本交互操作.分享给大家供大家参考,具体如下: 本文内容: pymongo的使用: 安装模块 导入模块 连接mongod 获取\切换数据库 选择集合 CRUD操作 首发时间:2018-03-18 20:11 pymongo的使用: 安装模块: pip3 pymongo 导入模块: import pymongo 连接mongod: conn=pymongo.MongoClient(host="localhost",port=27

  • 原生JS实现Ajax通过GET方式与PHP进行交互操作示例

    本文实例讲述了原生JS实现Ajax通过GET方式与PHP进行交互操作.分享给大家供大家参考,具体如下: 一.代码 conn.php <?php $conn=mysql_connect("localhost","root","root") or die("数据库连接失败".mysql_error()); mysql_select_db("db_database27",$conn) or die(&quo

  • AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】

    本文实例讲述了AngularJS实现与Java Web服务器交互操作的方法.分享给大家供大家参考,具体如下: AngularJS是Google工程师研发的产品,它的强大之处不是几句话就能描述的,只有真正使用过的人才能体会到,笔者准备在这篇文章中,以一个简单的登录校验的例子说明如何使用AngularJs和Web服务器进行交互. 准备工作 1.下载angular js库. 官网下载地址:https://angularjs.org/ 或者点击此处本站下载. 2.开发环境准备,由于是和Tomcat服务器

  • Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import HttpResponse import hashlib, time, re from xml.etree import ElementTree as ET def weixin(request): token = "your token here" params = request.GET

  • 用ASP实现对ORACLE数据库的操作

    ASP(Active Server Pages)是微软公司为开发互联网应用程序所提出的工具之一,ASP与数据库的联接一般通过ADO(Activex Data Object)来实现的,就象<计算机世界>2000年3月20日的<用ASP对SQL Server数据库操作>文章介绍的一样,ADO可以完全支持Microsoft SQL Server ,但对应用更加广泛.机制更加复杂的ORACLE 数据库服务就有一些困难,如果想作一些简单的查询功能,ADO是足够的,如要想更好地发挥ORACLE

随机推荐