我是Python新手。我试图比较具有相同模式的两个sqlite数据库。表格结构在两个数据库中也是相同的,但数据不同。我想拾取两个表中从两个数据库中不存在在任一db1.fdetail
或db2.fdetail
使用Python比较两个sqlite数据库
DB1 -
Table - fdetail
id name key
1 A k1
2 B K2
3 C K3
DB2 -
Table - fdetail
id name keyid
1 A k1
2 D K4
3 E K5
4 F K6
行
期望输出
id name keyid
1 B k2
2 C K3
3 D K4
4 E K5
5 F K6
我的代码是
import sqlite3
db1 = r"C:\Users\X\Documents\sqlitedb\db1.db"
db2 = r"C:\Users\X\Documents\sqlitedb\db2.db"
tblCmp = "SELECT * FROM fdetail order by id"
conn1 = sqlite3.connect(db1)
conn2 = sqlite3.connect(db2)
cursor1 = conn1.cursor()
result1 = cursor1.execute(tblCmp)
res1 = result1.fetchall()
cursor2 = conn2.cursor()
result2 = cursor2.execute(tblCmp)
res2 = result2.fetchall()
所以我有两个列表res1
和res2
。如何根据列Keyid
来比较列表。
任何帮助,高度赞赏。
Minor nit,但由于ATTACH中的文件名是字符串表达式,而不是标识符,因此您可以不使用占位符来传递它 - 与使用字符串格式相比。尽管这里几乎没有什么区别。 –
非常感谢您的帮助。有效。我不明白几件事情。为什么它在第一个查询中是'main.fdetail'而不是'db1.fdetail' –
@IljaEverilä我假设数据库名称不是表达式,但测试显示它实际上是。谢谢! –