使用python从sqlite中的第二个数据库获取表名
我正在尝试使用python获取两个数据库的表名。我从第一个数据库获取表,但不是从第二个数据库获取表。每个数据库中只有一个表 代码-使用python从sqlite中的第二个数据库获取表名,python,sqlite,Python,Sqlite,我正在尝试使用python获取两个数据库的表名。我从第一个数据库获取表,但不是从第二个数据库获取表。每个数据库中只有一个表 代码- import sqlite3 db1 = r"C:\Users\X\Documents\sqlitedb\A.db" db2 = r"C:\Users\X\Documents\sqlitedb\B.db" conn = sqlite3.connect(db1) conn.execute("ATTACH '{}' AS db2".format(db2)) re
import sqlite3
db1 = r"C:\Users\X\Documents\sqlitedb\A.db"
db2 = r"C:\Users\X\Documents\sqlitedb\B.db"
conn = sqlite3.connect(db1)
conn.execute("ATTACH '{}' AS db2".format(db2))
res = conn.execute("SELECT name FROM sqlite_master WHERE type='table';")
for name in res:
tblname = name[0]
print(name[0])
res1 = conn.execute("""SELECT * FROM main."""+tblname+"""
WHERE IDKey NOT IN
(SELECT IDKey FROM db2."""+tblname+""")
""").fetchall()
res2 = conn.execute("""SELECT * FROM db2."""+tblname+"""
WHERE IDKey NOT IN
(SELECT IDKey FROM main."""+tblname+""")
""").fetchall()
它从db1而不是db2打印表
非常感谢您的帮助。您应该重复查询第二个数据库:
res2 = conn.execute("SELECT name FROM db2.sqlite_master WHERE type='table'")
for name in res2:
tblname = name[0]
print(name[0])
或者两者结合:
res = conn.execute("""
SELECT name from sqlite_master WHERE type='table'
UNION
SELECT name FROM db2.sqlite_master WHERE type='table'
""")
(请注意,如果两个数据库中的tablename不同,则需要修复以下代码,因为
tblname
是在循环中定义的,它只记住最后一个值)您应该对第二个数据库重复查询:
res2 = conn.execute("SELECT name FROM db2.sqlite_master WHERE type='table'")
for name in res2:
tblname = name[0]
print(name[0])
或者两者结合:
res = conn.execute("""
SELECT name from sqlite_master WHERE type='table'
UNION
SELECT name FROM db2.sqlite_master WHERE type='table'
""")
(请注意,如果两个数据库中的tablename不同,则需要修复以下代码,因为
tblname
是在循环中定义的,它只记住最后一个值)非常感谢。成功了。我可能需要改变一下。非常感谢。成功了。我可能需要改变一下。