cx_oracle库的用法,python oracle数据库cx_Oracle的一些用法
之前写过一篇关于cx_Oracle的环境配置的文章,有需要的同学可以看下:传送门下面是一段简单的基本使用方法的代码段:import cx_Oracleglobal cursorglobal connclass OracleTool(object):def __init__(self, urserName, passWord, url, mashineName):self.urserName = u
之前写过一篇关于cx_Oracle的环境配置的文章,有需要的同学可以看下:传送门
下面是一段简单的基本使用方法的代码段:
import cx_Oracle
global cursor
global conn
class OracleTool(object):
def __init__(self, urserName, passWord, url, mashineName):
self.urserName = urserName
self.passWord = passWord
self.url = url
self.mashineName = mashineName
def CreatConnect(self):
print('self.urserName=', self.urserName)
print('self.passWord=', self.passWord)
# 建立和数据库系统的连接
connectURL = self.urserName + '/' + self.passWord + '@' + self.url + '/' + mashineName
print('connectURL=', connectURL)
conn = cx_Oracle.connect(connectURL)
#conn = cx_Oracle.connect('lcb/lcbdat/@10.10.140.83/lcb') # (用户名/密码@服务器地址/服务器名)
# 获取操作游标
cursor = conn.cursor()
return cursor
def CreatTable(self, cursor):
# 执行SQL,创建一个表
cursor.execute('create table tb_user(id number, name varchar2(50), password verchar(50), primary key(id))')
# 关闭连接,释放资源
cursor.close()
print('Completed!')
return
def InsertData(self):
# 插入一条数据
cursor.execute('insert into ta_user values(1, ''admin'', ''password'')')
# 再插入一条数据
param1 = {'id' : 2, 'n' : 'admin', 'p' : 'password'}
cursor.executemany('insert into tb_user value(:id, :n, :p)', param1)
# 插入多条数据
param2 = [{'id' : 3, 'n' : 'admin', 'p' : 'password'}, {'id' : 4, 'n' : 'admin', 'p' : 'password'}, {'id' : 5, 'n' : 'admin', 'p' : 'password'}]
cursor.executemany('insert into tb_user value(:id, :n, :p)', param2)
cursor.close()
# 提交更改
conn.commit()
conn.close()
return
def SearchData(self, cursor):
cursor.execute('SELECT ')
title = cursor.fetchone()
print('title=', title)
'''
# 执行查询 语句
cursor.execute('select * from tb_user')
# 获取一条数据
one = cursor.fetchone()
print('1 : id:%s, name:%s, password:%s' % one)
# 获取两条数据, 注意: 游标已经到了第二条
two = cursor.fetchmany(2)
print('2:', two[0], '3:', two[1])
# 条件查询
cursor.prepare('select * from tb_user where id <= :id')
cursor.execute(None, {'id' : 5})
cursor.close()
conn.close
'''
return
userName = 'lcb'
userPassWord = 'lcbdat'
url = '10.10.140.83:1521'
mashineName = 'lcb'
oracleTool = OracleTool(userName, userPassWord, url, mashineName)
cursor = oracleTool.CreatConnect()
#oracleTool.CreatTable(cursor)
#oracleTool.InsertData()
oracleTool.SearchData(cursor)
值得注意的是,其实这样存在一个编码问题,当读取数据或者insert数据时,会发现乱码,或者insert失败
这里需要进行一些环境编码的设置,代码如下:
# 设置编码,否则:
# 1. Oracle 查询出来的中文是乱码
# 2. 插入数据时有中文,会导致
# UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-7: ordinal not in range(128)
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
更多推荐


所有评论(0)