前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现与Oracle数据库交互

Python实现与Oracle数据库交互

作者头像
tyrantlucifer
发布2022-03-23 15:09:23
8690
发布2022-03-23 15:09:23
举报
文章被收录于专栏:Tyrant Lucifer

前言

近期有一个项目需要用Python和Oracle数据库进行交互,所以有机会研究了一下oracle数据库,趁着知识在脑海中还热乎之际,用烂笔头记录一下最近这几天的研究成果。

环境参数

  • 开发环境:RedHat 7.1
  • Python版本:2.7.5
  • 网络状态:纯内网
  • Oracle数据库版本:11.2.0.4

在过程中遇到了哪些问题

  • Oracle客户端的安装
  • 离线状态下pip、setuptools的安装
  • whl文件的安装

安装Oracle客户端

从官网下载相对应的rpm包,我们一共要下载这么三个包:

  • basic
  • odbc

暴力安装

设置环境变量

编辑tnsname.ora

测试sqlplus是否能够连接成功

此刻我们的Oracle客户端已经安装成功!

离线安装pip、setuptools

  1. 从网上下载最新版本的源码包,如图所示
  1. 安装

安装系统组件包

安装setuptools,因为pip依赖setuptools,所以这一步必须先执行(安装使用root用户)

第二步安装pip(安装使用root用户)

离线安装cx_Oracle

从该地址https://pypi.org/project/cx-Oracle/#files下载Python对应版本的whl文件,我的Python版本2.7,所以下载这个文件

安装

至此,我们的cx_Oracle模块已经安装完毕

cx_Oracle的简单使用

demo.py

代码语言:javascript
复制
import cx_Oracle

user = 'system'
password = 'sas123'
url = '192.168.240.181/sasdev'

conn = cx_Oracle.connect(user, password, url ,encoding = "utf-8", nencoding="utf-8")
curs = conn.cursor()
rows=curs.execute("select distinct(name) from student")
for row in rows:
        print row[]
curs.close()
conn.close()

经验与教训

  • Oracle数据库位数需要与Python位数一致,比如,Oracle 64位,则Python也是 64位
  • 本地环境变量NLS_LANG需要与数据库编码一致,不然会出现乱码情况
  • Python创建一个与Oracle数据库的连接时,需要指定encodingnencoding两个参数,这样才能正常显示数据

附录,简单记录一下Oracle数据库操作的一些语句

  • 创建用户
代码语言:javascript
复制
create user sas(用户名) identified by password(密码);

上述语句创建了一个用户名为sas,密码为password的用户
  • 授予用户权限
代码语言:javascript
复制
grant resource,connect to sas;
grant all privileges to sas;

上述语句授予sas用户的相对应的读写连接数据库的权限
  • 删除用户
代码语言:javascript
复制
drop user sas cascade;

上述语句删除了sas用户以及sas用户下的表
  • 查看用户下的所有的表
代码语言:javascript
复制
select * from user_tables;
  • 查看数据库编码
代码语言:javascript
复制
select userenv('language') from dual;

Tips

  • 放弃Centos/RedHat 6系列机器吧,cx_Oracle只支持Python 2.7及以上,6系列机器自带Python 2.6版本,如果重新编译安装Python 2.7的话,yum等等一系列依赖Python的组件得全部搞一遍,光解决这些错误就要浪费无数时间
  • cx_Oracle与数据库通信与其他数据库通讯类似,流程都是创建连接、获取游标、执行语句、获取结果,只要你用户pymysql就入门很快
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tyrant Lucifer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境参数
  • 在过程中遇到了哪些问题
  • 安装Oracle客户端
  • 离线安装pip、setuptools
  • 离线安装cx_Oracle
  • cx_Oracle的简单使用
  • 经验与教训
  • 附录,简单记录一下Oracle数据库操作的一些语句
  • Tips
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档