2022年 11月 4日

Python连接oracle数据库的基本操作

1、创建数据库连接

步骤:

创建数据库连接connect,创建游标cursor,然后执行sql语句,执行完成后,关闭游标,关闭数据库连接close;
插入、更新、删除操作后需要提交commit。

#!/usr/bin/python
#-– coding: UTF-8 –

import cx_Oracle
import os
import re
os.environ[‘NLS_LANG’] = ‘SIMPLIFIED CHINESE_CHINA.UTF8’

2、插入操作(增)

def insertdata():
conn = cx_Oracle.connect(‘数据库名称/密码@数据库ip地址/ORCL’)
cur = conn.cursor()
sql = “insert into TEST123(XXNAME,XXCLASS,XXNUMBER,XXSCORE) VALUES(‘张三’,‘三年级’,‘3’,‘60’)”
try:
cur.execute(sql)
conn.commit() #这里一定要commit才行,要不然数据是不会插入的
print(“插入数据成功”)
except:
conn.rollback() #发生错误时回滚
print(“语句执行错误”)
conn.close()

3、删除操作(删)

def deldata():
conn = cx_Oracle.connect(‘数据库名称/密码@数据库ip地址/ORCL’)
cur = conn.cursor()
sql = “delete from TEST123 WHERE XXNAME = ‘%s’”%(‘张三’)
try:
cur.execute(sql)
conn.commit()
print(“数据删除成功”)
except:
conn.rollback() #发生错误时回滚
print(“语句执行错误”)

4、更新操作(改)

def updatedata():
conn = cx_Oracle.connect(‘数据库名称/密码@数据库ip地址/database’)
cur = conn.cursor()
sql = “update TEST123 set XXSCORE = XXSCORE+100 WHERE XXNAME = ‘%s’”%(‘马云’)
try:
cur.execute(sql)
conn.commit()
print(“数据更新成功”)
except:
conn.rollback() #发生错误时回滚
print(“语句执行错误”)
conn.close()

5、匹配

def data_compare(x,y):
for i in range(0, len(y)):
result = re.search(y[i], x).group(0)
if result == y[i]:
compare_result = 1 # 匹配成功则返回1
z = result
else:
compare_result = 0 # 匹配不成功则返回0
z = “未知”
return compare_result, z

6、查询操作(查)

def getdata(sql):
conn = cx_Oracle.connect(‘数据库名称/密码@数据库ip地址/ORCL’)
cur = conn.cursor()
#sql = “SELECT XXNAME,XXCLASS,XXNUMBER,XXSCORE FROM TEST123”
try:
cur.execute(sql)
data = cur.fetchall()
print(data)
except:
print(“数据查询失败”)
conn.close()

查询通常有两种方式:

一种是使用cursor.fetchall()获取所有查询结果,然后再一行一行的迭代;另一种每次通过cursor.fetchone()获取一条记录,直到获取的结果为空为止。看下面的例子:
import cx_Oracle
conn = cx_Oracle.connect(‘数据库名称/密码@数据库ip地址/orcl’)
cursor = conn.cursor ()

cursor.execute (“SELECT * FROM TEST”)
rows = cursor.fetchall()
for row in rows:
print (“%d, %s, %s, %s” % (row[0], row[1], row[2], row[3]))
print (“Number of rows returned: %d” % cursor.rowcount)

cursor.execute (“SELECT * FROM TEST”)
while (1):
row = cursor.fetchone()
if row == None:
break
print (“%d, %s, %s, %s” % (row[0], row[1], row[2], row[3]))
print ( “Number of rows returned: %d” % cursor.rowcount)

cursor.close ()
conn.close ()