python連線Oracle實現增刪查改
阿新 • • 發佈:2022-05-09
一、下載對應的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) ); --輸入資料 insertinto 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資料庫。
五、執行結果