您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python连接Oracle实例

bubuko 2022/1/25 20:07:48 python 字数 11498 阅读 629 来源 http://www.bubuko.com/infolist-5-1.html

最近需要用Python连接Oracle操作,之前接触过,没自己手写过,特此记录。数据库是Oracle 11,python版本2.7的。 这个需求是两个库A和B,假设现在需要识别一张表在A库里面有没记录,如果没有,将表名写入一个log,如果有再去B库里查有没有该表,如果没有,表名计入另外一个log文件 ...

最近需要用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 版本需要一致,这个善用搜索就可以,我们直接上代码

 1 #!/usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3 
 4 import cx_Oracle
 5 
 6 #username
 7 dbusernamea = username1
 8 dbusernameb = username2
 9 
10 #dbconnectaddress
11 db_usernamea = cx_Oracle.connect(dbusernamea,password,dbaddress)
12 db_usernameb = cx_Oracle.connect(dbusernameb,password,dbaddress)
13 
14 #cursor
15 cur_usernamea = db_usernamea.cursor()
16 cur_usernameb = db_usernameb.cursor()
17 
18 #readtablename
19 def ReadTableName():
20     fo = open("tablename.txt","r"):
21     print(open success!)
22     table_name = []
23     for i in fo.readlines():
24         if i != \n and i != \r\n:
25             spiliti = i.replace(\t,‘‘).strip()
26             table_name.append(spiliti)
27     fo.close()
28     return table_name
29 
30 #
31 def CheckMainTable(ReadTableName):
32 
33     for tablename in ReadTableName:
34     sql_str_checkmaintable = """select a.* from all_objects a where a.object_name = upper(%s) """%tablename
35     cur_usernamrea.execute(sql_str_checkmaintable)
36     #获取结果集
37     rets = cur_usernamea.fetchall()
38     #如果结果集为空判断该表在A中不存在
39     if length(rets) == 0:
40         print(MainAcess dont have this table: +tablename+\n)
41         #写入log writelines即可 如有需要
42         with open("filename_a","a") as a:
43             a.writelines.(tablename+\n)
44 
45     else:
46       sql_str_checksubtable = """select a.* from all_objects a where a.object_name = upper(%s) """%tablename
47       cur_usernamreb.execute(sql_str_checksubtable)
48       #获取结果集
49       recv = cur_usernameb.fetchall()
50       #如果结果集为空判断该表在B中不存在
51       if length(recv) == 0:
52           print(‘SubAcess dont have this table: +tablename+\n)
53           #写入log writelines即可 如有需要
54        with open("filename_b","a") as b:
55               b.writelines.(tablename+\n)
56 
57 if __name__ == __main__:
58     CheckMainTable(ReadTableName())
59 
60 #关闭游标
61 db_usernamea.close()
62 db_usernameb.close()

 

 其实最近也是才开始学习Python连接数据库这个东西,里面一些内容可能写的不好,也不是很完善。因为是纯粹手打,代码可能会有疏漏,有错误的地方如果有人看见请指出,我会及时修正。这个脚本在工作中运行过,亲测有效。但是其实里面有部分内容我也是搜索的,了解的不具体,复制过来改改就用了,所以有问题请大家不吝赐教。

Python连接Oracle实例

原文:https://www.cnblogs.com/littlegao-world/p/12422835.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶