python访问Oracle数据库相关操作
环境:
Python版本:3.6.6
win系统:64位
Linux系统:64位
首先安装配置时,版本必须一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本!
需要的安装包:
Oracle Instant Client 客户端下载
https://www.oracle.com/cn/database/technologies/instant-client/downloads.html
instantclient-basic-windows.x64-11.2.0.4.0.zip
cx_Oracle  下载
https://pypi.python.org/pypi/cx_Oracle/6.0rc1
https://sourceforge.net/projects/cx-oracle/files/
cx_Oracle-6.0rc1-cp36-cp36m-manylinux1_x86_64.whl  # linux
cx_Oracle-6.0rc1-cp36-cp36m-win_amd64.whl  #   PIP 安装
Windows 安装步骤:
- 解压 [instantclient ]客户端到指定目录,并新建环境变量:例如: ORACLE_HOME == D:\app\oracle\product\instantclient_11_2
(设置好后cx_oracle会通过此路径找到它要的oci.dll等动态链接库) 
或者手动将文件复制过去:
将解压文件夹下的oci.dll, oraocci12.dll,oraociei12.dll 拷贝到python安装目录下的lib/site-packages中
- 安装 cx_Oracle ;
 - 验证安装是否成功: import cx_Oracle 或 python -c "import cx_Oracle"
 
Linux 安装步骤:
- 解压 [instantclient-basic-windows.x64-11.2.0.4.0.zip] 到指定目录;
 - 解压后的 [instantclient_11_2]目录。添加到 PATH环境变量中(如下);
 
$ vim /etc/profile #文件尾部添加
export ORACLE_HOME=/opt/instantclient_11_2/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
$ source /etc/profile    使文件修改生效
或
$ vim ~/.bash_profile
export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib
$ source .bash_profile    使文件修改生效
创建软连接
cd /安装目录/instantclient_11_2/ ln -s libclntsh.so.11.1 libclntsh.so安装cx_Oracle:
pip install cx_Oracle-6.0rc1-cp36-cp36m-win_amd64.whl验证安装是否成功:
import cx_Oracle 或 python -c "import cx_Oracle"
注意:
1、Oracle数据库服务器端和Python编码方式不一致时会导致读取的中文文本乱码,可以通过设置NLS_LANG环境变量解决这一问题。
2、cx_Oracle模块会读取系统的path环境变量,寻找所需Oracle客户端文件,将path指向新下载的64位即时客户端,这样就可以解决系统中已有的Oracle11g - 32位版客户端与64位Python不兼容的冲突问题。
环境变量设置:  解决查询汉字出现乱码的问题
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
os.environ['path'] = 'C:/instantclient_11_2/'  # 解压的目录路径
连接Oracle数据库
- 连接数据库:
 
import cx_Oracle
# 方式一:
tns = cx_Oracle.makedsn(locahost, port, database)
db = cx_Oracle.connect(user, pwd, tns)
# 方式二:
db = cx_Oracle.connect('username','password','locahost/database')
# 方式三:
db = cx_Oracle.connect('用户名/密码@IP:端口号/database')
- 创建操作游标:
 
cursor = db.cursor()   # 用于进行 SQL 操作
- 关闭数据库:
 
cursor.close()  # 关闭游标
db.close()  # 关闭数据库
- SQL 查询:
 
方式一:
cursor.execute("Select member_id from member")
方式二:
sqlstr = "Select member_id from member where dt =:1 and id =:2"
datatuplp = ('2021-02-08', '123456789')
cursor.execute(sqlstr, datatuplp)
方式三:
cursor.prepare("""select * from tb_user where id <= :id""")
cursor.execute(None,{'id':5})
for row in cursor:  #相当于fetchall()
    print(row)
- 创建表格:
 
sql = 'create table tb_user(id number, name varchar2(50),password varchar(50),primary key(id))'
cursor.execute(sql)
- 插入数据:
 
#插入一条记录
cursor.execute("""insert into tb_user values(1,'admin','password')""")
#再插入一条数据
param={'id':2,'n':'admin','p':'password'}
cursor.execute('insert into tb_user values(:id,:n,:p)',param)
#一次插入多条数据,参数为字典列表形式
param=[{'id':3,'n':'admin','p':'password'},{'id':4,'n':'admin','p':'password'},{'id':5,'n':'admin','p':'password'}]
cursor.executemany('insert into tb_user values(:id,:n,:p)',param)
#再一次插入多条数据
param=[];
#生成5条插入数据,参数为元组列表形式
for i in range(6,11):   # [6,7,8,9,10]
    param.append((i,'user'+str(i),'password'+str(i)))
#插入数据
cursor.executemany('insert into tb_user values(:1,:2,:3)',param)
												
											python访问Oracle数据库相关操作的更多相关文章
- python对oracle数据库的操作
		
1 Oracle数据库 1.1 Oracle环境配置&客户端连接 1.1.1 下载安装Oracle绿色版客户端instantclient: 到o ...
 - 【转】Python访问oracle数据库,DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found"
		
使用python连接Oracle,出现如下错误: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified ...
 - 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动
		
由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...
 - python链接oracle数据库以及数据库的增删改查实例
		
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
 - Oracle数据库一些操作信息
		
Oracle数据库如何查看当前用户角色权限及默认表空间查看当前用户的一些信息,包括用户拥有的角色权限信息.用户表空间以及用户和默认表空间的关系等--查看用户的角色权限1.查看当前用户拥有的角色权限信息 ...
 - python——连接Oracle数据库
		
前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...
 - .net(C#)访问Oracle数据库的几种免安装组件的对比
		
Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...
 - 用JDBC访问ORACLE数据库  关于commit  增快效率  大数据  等的整理
		
1.问:用JDBC访问ORACLE数据库,做DELETE操作,能用JAVA多线程实现吗? ORACLE服务器要怎么配?(以下答案来自网络,仅供参考) 答: Oracle有自己的锁机制.就算你开100条 ...
 - .net(C#)访问Oracle数据库的几种免安装组件的对比(转)
		
原文地址 [内容为转载,个人推荐还是用官方的组件,推荐使用 Oracle.DataAccess.dll ] .net(C#)编程过程中,使用到了以下三种免安装的Oracle访问组件,能够不安装Orac ...
 
随机推荐
- kubernets之就绪探针
			
一 介绍就绪探针 1.1 开始介绍就绪探针之前,让我们来提问几个问题?第一,在sevice这章我们了解到, 当流量从Ingress被转发到服务,然后服务从其维护当Endponits 里面列表查找到任 ...
 - APP测试之Monkey测试
			
一.简介 1.什么是Monkey测试? Monkey testing,也有人叫做搞怪测试.就是用一些稀奇古怪的操作方式去测试被测试系统,以测试系统的稳定性.Monkeytest,一般指这样的测试活动, ...
 - jenkins Windows下自动化部署.netcore
			
(1) 安装java-sdk (Jdk5-11)不用配置环境变量 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloa ...
 - HTML基础复习4
			
CSS的应用 模块的边框 设置边框样式 border-style::如果是一个值那么表示四个边的样式都一样:如果是两个值那么第一个值代表上下,第二个值代表左右:如果是三个值,第一个值代表上,第二个值代 ...
 - Mysql四种通信协议(linux下本地连接的都是socket 其他都是tcp)
			
Mysql通信协议 - 张冲andy - 博客园 https://www.cnblogs.com/andy6/p/6204579.html
 - kettle 连接oracle12c问题解决办法:
			
在oracle的安装文件目录......\NETWORK\ADMIN\sqlnet.ora 文件中添加该语句:SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8window ...
 - promise有几种状态,什么时候会进入catch
			
三个状态:pending.fulfilled.reject两个过程:padding -> fulfilled.padding -> rejected当pending为rejectd时,会进 ...
 - 在Centos7上安装Python+Selenium+Chrome+Chromedriver
			
1.下载Chrome 上一篇文章已经演示过了Python+Selenium+Firefox+Geckodriver安装步骤并通过自动化脚本打开百度 因此当前只需要安装Chrome和Chromedriv ...
 - LOJ10019生日蛋糕
			
Mr.W 要制作一个体积为 N*π 的 M 层生日蛋糕,每层都是一个圆柱体. 设从下往上数第 i 蛋糕是半径为 R_i,高度为 H_i 的圆柱.当 i<M 时,要求 R_i>R_{i+1} ...
 - Linux下部署tp5项目如何隐藏URL中index.php
			
找到nginx配置文件,加入以下代码: location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php?s=/$1 last; ...