很多地理相关的处理都离不开对数据库的操作,对数据库的操作也是每一门语言必备的功能之一;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学习交流】,一起交流,学习,进步!