我是python新手,正在尝试编写一个脚本来比较来自两个数据库的数据。在
尤其是,尝试生成输出以列出ecah客户端的匹配/取消匹配序列。在
有两个数据库
AORCL数据库
SQL> select * from ffduser.client_mapping;
CLIENTNO CLIENTSEQ STATUS
---------- ---------- ----------
1 1000 VALID
2 2000 VALID
BORCL数据库
^{pr2}$预期产量
Clientno 1 has Clientseq 1000 in AORCL and 1000 in BORCL -> Match
Clientno 2 has Clientseq 2000 in AORCL and 2001 in BORCL -> UnMatch
=======
我写了下面的代码,但无法生成预期的输出。 我认为它可能需要嵌套循环,但我是新手。 非常感谢任何帮助。在
$ cat test.py
#!/usr/bin/pytho
import cx_Oracle
pdb_name = 'AORCL'
ddb_name = 'BORCL'
pserver_name = 'ff1db03'
dserver_name = 'ff1db03'
pcon = cx_Oracle.connect('system/xxxxx@'+pserver_name+':1521/'+pdb_name)
dcon = cx_Oracle.connect('system/xxxxx@'+dserver_name+':1521/'+ddb_name)
pcur = pcon.cursor()
dcur = dcon.cursor()
pstat = pcur.execute('select clientno,clientseq from ffduser.client_mapping order by clientno').fetchall()
for plogresult in pstat:
print (pdb_name +'->'+ ' Client# '+str(plogresult[0])+' Seq No# ' +str(plogresult[1]))
dstat = dcur.execute("select clientno,clientseq from ffduser.client_mapping where status='VALID' order by clientno").fetchall()
for dlogresult in dstat:
print (pdb_name +'->'+' Client# '+str(dlogresult[0])+' Seq No# ' +str(dlogresult[1]))
pcur.close()
pcon.close()
dcur.close()
dcon.close()
$ python test.py
AORCL-> Client# 1 Seq No# 1000
AORCL-> Client# 2 Seq No# 2000
AORCL-> Client# 1 Seq No# 1000
AORCL-> Client# 2 Seq No# 2002
我想你需要一个方法,我可以称之为
select_to_name_value_mapping(table_name)
此方法返回一个字典,其中“names”作为键,Eno作为值。在
select_to_name_value_mapping(table_name)
的实现取决于您:-)上面是Python中的实现。人脑更容易找到这种迭代方法。你可以用SQL得到同样的结果,但是要得到“集中思考”的解决方案就比较困难了。我的建议是:学习成套思维。在
相关问题 更多 >
编程相关推荐