python操作arcgis_基于ArcGIS的python编程 16、Python操作Oracle数据库

很多地理相关的处理都离不开对数据库的操作,对数据库的操作也是每一门语言必备的功能之一;python对数据库的操作对于不同的数据库也有对应的第三方类库,通过这些类库提供的方法,可以实现对数据库的简单操作。

Oracle数据库操作函数的定义

新建一个.py文件,文件命名为OracleHelper,在这个文件里定义三个操作函数,通过这三个函数可以实现简单的增删查改等操作:

查询操作函数:sqlSelect(),参为查询SQL语句与Oracle数据库连接;

操作函数1(更新,插入,删除等)函数:sqlDML(),参数为操作SQL语句与Oracle数据库连接;

操作函数2:sqlDML2函数与sqlDML函数不同的是sqlDML2的SQL语句是带参数的,主要用于大数据类型(如CLOB、BLOB等)字段的操作,所以在函数调用时的SQL语句写法上也有不同,详细看下文。

三个函数的代码如下:

def sqlSelect(sql,db): #返回的是一个元组;空值为None

cr=db.cursor()

cr.execute(sql)

rs=cr.fetchall()

cr.close()

return rs

def sqlDML(sql,db):

cr=db.cursor()

cr.execute(sql)

cr.close()

db.commit()

def sqlDML2(sql,params,db):

cr=db.cursor()

cr.execute(sql,params)

cr.close()

db.commit()

操作Oracle数据库

只要把前面创建的OracleHelper.py文件与调用的函数的文件放在同一文件夹里面,就可以把文件OracleHelper作为一个类库,利用import导入这个类库,然后利用OracleHelper.sqlDML2()的方式调用类库里的函数;如下图红框部分就是上面自定义的函数。

调用OracleHelper.py文件里的函数操作Oracle数据库的代码如下:

#coding=utf-8

import cx_Oracle

import OracleHelper

userId="user" #数据库用户名

password="password" #数据库登录密码

#数据库地址格式:IP/实例

datasource="127.0.0.1/orcl" #需要操作的数据库地址与实例

#Oracle数据库连接

db=cx_Oracle.connect('{0}/{1}@{2}'.format(userId,password,datasource))

#查询语句

XZDM='2356'

getsql="select * from tabletest where XZDM='"+XZDM+"'"

#调用查询函数

result=OracleHelper.sqlSelect(getsql,db)

#返回的结果result为一个元组,然后通过访问元组的形式获取到result里的值

#例如获得第一行第一列的值

fistClumn=result[0][0]

#插入数据操作(sql语句带参数的形式)

value1="";value2="";value3="";value4="" #需要插入的值

parameters = [value1, value2, value3, value4]

insertSql = "insert into tabletest(colunm1,colunm2,colunm3,colunm4) VALUES (:1,:2,:3,:4)"

OracleHelper.sqlDML2(insertSql, parameters, db)

这里有两个值得注意的地方:

一个是构建SQL语句的时候,例如我上面的代码:

getsql="select * from tabletest where XZDM='"+XZDM+"'"

SQL语句通过变量与字符串连接的形式,这时需要注意的是变量XZDM的值的编码方式是否为utf-8(代码第一行已经定义了编码方式为utf-8);如果XZDM的值通过其他形式获取到的话,有时编码方式不是utf-8,这时需要把XZDM的值转为utf-8才能进行字符串连接,否则会出错;另外XZDM的值在SQL语句中要用英文的单引号括起来;例如我这里的代码运行时getsql的值为:select * from tabletest where XZDM='2356' 。

另外一个需要注意的地方是在构建SQL语句中的参数个数需要一致;parameters 列表中的值要与数据库对应列的数据类型需要一致,所以这里要根据实际情况,可能会需要进行数据类型的转换。

环境的配置

1、下载安装第三方类库cx_Oracle,用于操作数据库。

下载后默认安装就好。在配置好环境变量后,输入 import cx_Oracle 如果出现下面的页面表示 类库cx_Oracle已经安装成功。

2、安装Oracle客户端

电脑应该需要安装Oracle数据库客户端,并且这个客户端能够连接上需要入库的数据库;因为通过python利用cx_Oracle类库进行操作Oracle数据库需要依赖Oracle客户端。这个条件我不确定是否一定需要。

3、Oracle数据库编码方式设置

这个步骤漏了,可能会导致python操作Oracle数据库时,如果SQL语句中包含了中文字符会报错。

设置方式如下:添加系统变量

添加变量名:NLS_LANG

添加变量值:SIMPLIFIED CHINESE_CHINA.UTF8

欢迎关注公众号【GIS学习交流】,一起交流,学习,进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值