Python连接Oracle实例
最近需要用Python连接Oracle操作,之前接触过,没自己手写过,特此记录。数据库是Oracle 11,python版本2.7的。
这个需求是两个库A和B,假设现在需要识别一张表在A库里面有没记录,如果没有,将表名写入一个log,如果有再去B库里查有没有该表,如果没有,表名计入另外一个log文件。
查库的sql语句
select t.* from all_objects t where t.object_name = upper(&table_name);
Python连接oracle需要的package cx_Oracle 版本需要一致,这个善用搜索就可以,我们直接上代码
#!/usr/bin/env python #-*- coding:utf-8 -*- import cx_Oracle #username dbusernamea = ‘username1‘ dbusernameb = ‘username2‘ #dbconnectaddress db_usernamea = cx_Oracle.connect(dbusernamea,‘password‘,‘dbaddress‘) db_usernameb = cx_Oracle.connect(dbusernameb,‘password‘,‘dbaddress‘) #cursor cur_usernamea = db_usernamea.cursor() cur_usernameb = db_usernameb.cursor() #readtablename def ReadTableName(): fo = open("tablename.txt","r"): print(‘open success!‘) table_name = [] for i in fo.readlines(): if i != ‘\n‘ and i != ‘\r\n‘: spiliti = i.replace(‘\t‘,‘‘).strip() table_name.append(spiliti) fo.close() return table_name # def CheckMainTable(ReadTableName): for tablename in ReadTableName: sql_str_checkmaintable = """select a.* from all_objects a where a.object_name = upper(%s) """%tablename cur_usernamrea.execute(sql_str_checkmaintable) #获取结果集 rets = cur_usernamea.fetchall() #如果结果集为空判断该表在A中不存在 if length(rets) == 0: print(‘MainAcess don‘t have this table: ‘+tablename+‘\n‘) #写入log writelines即可 如有需要 with open("filename_a","a") as a: a.writelines.(tablename+‘\n‘) else: sql_str_checksubtable = """select a.* from all_objects a where a.object_name = upper(%s) """%tablename cur_usernamreb.execute(sql_str_checksubtable) #获取结果集 recv = cur_usernameb.fetchall() #如果结果集为空判断该表在B中不存在 if length(recv) == 0: print(‘SubAcess don‘t have this table: ‘+tablename+‘\n‘) #写入log writelines即可 如有需要 54 with open("filename_b","a") as b: b.writelines.(tablename+‘\n‘) if __name__ == ‘__main__‘: CheckMainTable(ReadTableName()) #关闭游标 db_usernamea.close() db_usernameb.close()
其实最近也是才开始学习Python连接数据库这个东西,里面一些内容可能写的不好,也不是很完善。因为是纯粹手打,代码可能会有疏漏,有错误的地方如果有人看见请指出,我会及时修正。这个脚本在工作中运行过,亲测有效。但是其实里面有部分内容我也是搜索的,了解的不具体,复制过来改改就用了,所以有问题请大家不吝赐教。
相关推荐
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16