本文将介绍如何使用Python连接Oracle数据库进行数据读取与写入。首先介绍环境的安装,此部分借鉴网友的博客,后一部分介绍连接数据库和读书取数等基本使用语法。
1. 环境安装
借鉴网友阑珊的博客,感谢分享!
https://www.cnblogs.com/lansan0701/p/8039332.html
2. 使用语法
(1) 连接数据库
#加载cx_Oracle模块 import cx_Oracle #创建连接 conn = cx_Oracle.connect('用户名/密码@主机IP地址:端口号/数据库名称', encoding='utf-8') cursor = conn.cursor()
(2) 查询,读取数据
需求:获取表student中2019年度学生的姓名,年龄,性别,成绩数据。
# 首先写好sql语句,这里需要注意stat_year字段数据库中的类型varchar,在Oracle中查询条件为stat_year = '2019',但在execute()方法中的sql字符串中不需要加引号 sql = 'select name,age,gender,grade from student where stat_year = 2019' # 利用cousor对象的execute()方法执行sql语句 cursor.execute(sql) #利用cursor对象的fetchall()方法获取sql的结果返回类型为list,其中每个元素(每条记录)为元组类型 student_informations = cursor.fetchall()
需求:获取符合一定筛选条件的记录数
sql = 'select count(*) from student where stat_year = 2019' # 利用cousor对象的execute()方法执行sql语句 cursor.execute(sql) #利用cursor对象的fetchall()方法获取sql的结果返回类型为list,其中每个元素(每条记录)为元组类型,获取结果列表中第一个元组的第一个元素(实际上结果列表只有一个元组,元组中只有一个元素) counts = cursor.fetchall()[0][0]
(3) 将数据批量写入数据库
需求:将若干条记录写入数据库(已创建)中。这里利用cursor.executemany()方法实现
name = ['A','B','C'] age = [10,8,9] gender = ['m','f','m'] grade = [80,92,84] stat_year = ['2019','2019','2019'] # 构造数据列表,每行记录表示为字典 data = [] for i in range(len(name)): data.append({'name':name[i],'age':age[i],'gender':gender[i],'stat_year '=stat_year [i]}) # 利用executemany()函数将列表中的数据插入到数据库中 cursor.executemany('insert into student values(:name ,:age ,:gender ,:grade,:stat_year )',data) db.commit()
(4) 最后,记得关闭数据库连接
cursor.close()
conn.close()