python连接Oracle实现增删查改
一、下载对应的cx_Oracle模块
1.进入到python根目录下的scripts文件夹
2.在上方路径输入cmd,然后回车
3.在cmd中输入pip install cx_Oracle并回车
二、任务内容
1.建立python函数,对teacher表中数据进行修改,要求SQL语句中,通过参数传递值,构建修改值和查询条件,进行数据修改。
2.建立python函数,删除course表中的数据,要求SQL语句中,通过参数传递值,构建查询条件,进行数据删除。
3.建立python函数,查询对teacher和course表进行数据更新操作前后的结果。
三、代码实现
1.首先在图形化界面工具PLSQL中创建一系列的表:
代码如下:
--创建数据表 create table teacherCard ( tcid int primary key, tcdesc varchar2(20) ); create table teacher ( tid int primary key, tname varchar2(20), tcid int references teacherCard(tcid) ); create table course ( cid int primary key, cname varchar2(20), tid int references teacher(tid) ); --输入数据 insert into teacherCard values(1,'tzdesc'); insert into teacherCard values(2,'twdesc'); insert into teacherCard values(3,'tldesc'); insert into teacher values(1,'tz',1); insert into teacher values(2,'tw',2); insert into teacher values(3,'tl',3); insert into course values(1,'java',1); insert into course values(2,'html',1); insert into course values(3,'sql',2); insert into course values(4,'web',3); commit;
2.创建好需要的Oracle类
代码如下:
import cx_Oracle class Oracle(object): """ oracle db operator """ def __init__(self,userName,password,host,instance): self._conn = cx_Oracle.connect("%s/%s@%s/%s" % (userName,password,host,instance)) #self._conn = cx_Oracle.connect('system', 'Csz123456', '127.0.0.1:1521/orcl') self.cursor = self._conn.cursor() # query methods def queryAll(self,sql): self.cursor.execute(sql) return self.cursor.fetchall() def queryOne(self,sql): self.cursor.execute(sql) return self.cursor.fetchone() def queryBy(self,sql,nameParams={}): if len(nameParams) > 0 : self.cursor.execute(sql,nameParams) else: self.cursor.execute(sql) return self.cursor.fetchall() def insertBatch(self,sql,nameParams=[]): """batch insert much rows one time,use location parameter""" self.cursor.prepare(sql) self.cursor.executemany(None, nameParams) self.commit() def commit(self): self._conn.commit() def __del__(self): if hasattr(self,'cursor'): self.cursor.close() if hasattr(self,'_conn'): self._conn.close()
3.实现增删查改
增加操作:
def add_course(self, value): sql = "INSERT INTO course VALUES " + value #游标执行 self.cursor.execute(sql) self.commit print("成功增加course表中的数据"
删除操作:
def delete_course(self, condition): sql = "DELETE course WHERE " + condition #游标执行 self.cursor.execute(sql) self.commit() print("成功删除course表中的数据")
查询操作:
def queryResult(): sql1 = "SELECT * FROM teacher" sql2 = "SELECT * FROM course" oraDb = Oracle('system','Csz123456','127.0.0.1:1521','orcl') fields1 = oraDb.queryAll(sql1) fields2 = oraDb.queryAll(sql2) print(fields1) print(fields2)
修改操作:
def update_teacher(self, value, condition): sql = "UPDATE teacher SET TNAME = " + value + " WHERE " + condition #游标执行 self.cursor.execute(sql) self,commit print("成功修改teacher表中的数据")
完整的python代码:
import cx_Oracle class Oracle(object): """ oracle db operator """ def __init__(self,userName,password,host,instance): self._conn = cx_Oracle.connect("%s/%s@%s/%s" % (userName,password,host,instance)) #self._conn = cx_Oracle.connect('system', 'Csz123456', '127.0.0.1:1521/orcl') self.cursor = self._conn.cursor() # query methods def queryAll(self,sql): self.cursor.execute(sql) return self.cursor.fetchall() def queryOne(self,sql): self.cursor.execute(sql) return self.cursor.fetchone() def queryBy(self,sql,nameParams={}): if len(nameParams) > 0 : self.cursor.execute(sql,nameParams) else: self.cursor.execute(sql) return self.cursor.fetchall() def add_course(self, value): sql = "INSERT INTO course VALUES " + value #游标执行 self.cursor.execute(sql) self.commit print("成功增加course表中的数据" def insertBatch(self,sql,nameParams=[]): """batch insert much rows one time,use location parameter""" self.cursor.prepare(sql) self.cursor.executemany(None, nameParams) self.commit() def commit(self): self._conn.commit() def __del__(self): if hasattr(self,'cursor'): self.cursor.close() if hasattr(self,'_conn'): self._conn.close() def update_teacher(self, value, condition): sql = "UPDATE teacher SET TNAME = " + value + " WHERE " + condition #游标执行 self.cursor.execute(sql) print("成功修改teacher表中的数据") self.commit() def delete_course(self, condition): sql = "DELETE course WHERE " + condition #游标执行 self.cursor.execute(sql) self.commit() print("成功删除course表中的数据") def queryResult(): sql1 = "SELECT * FROM teacher" sql2 = "SELECT * FROM course" oraDb = Oracle('system','Csz123456','127.0.0.1:1521','orcl') fields1 = oraDb.queryAll(sql1) fields2 = oraDb.queryAll(sql2) print(fields1) print(fields2) def test1(): oraDb = Oracle('system','Csz123456','127.0.0.1:1521','orcl') value = "'csz'" condition = "TID = 1" oraDb.update_teacher(value, condition) def test2(): oraDb = Oracle('system','Csz123456','127.0.0.1:1521','orcl') condition = "CID = 1" oraDb.delete_course(condition) print("更新操作之前的表:") queryResult() test1() test2() print("更新操作之后的表:") queryResult()
四、实验存在问题和解决办法
一、下载对应模块cx_Oracle
1.到python根目录下找到scripts文件夹。
2.进入scripts文件夹,双击上方路径,输入cmd并按回车。
3.在cmd中输入pip install cx_Oracle。
二、增删查改操作
1.需要使用commit()来提交。
2.Oracle中表的创建以及数据的写入的回顾。
三、Python语法基础
1.实验中的def函数、游标和连接的关闭程序应使用熟练
2.SQL语句中,应对通过参数传递值,构建修改值和查询条件,进行数据修改的操作熟练。
3. 通过Python程序能够操作Oracle数据库。
五、运行结果
作者:cszcoder
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具