我想编写一个查询,检查SQLite数据库中的所有表以获取一条信息,以简化事件后诊断(性能无关紧要)。
我希望编写一个查询,使用the sqlite_master table获取表列表,然后在一个查询中查询它们:
SELECT Name
FROM sqlite_master
WHERE Type = 'table' AND (
SELECT count(*)
FROM Name
WHERE conditions
) > 0;
但是,在尝试执行此样式的查询时,收到错误no such table: Name
。是否有允许这种情况的替代语法,或者它是否根本不受支持?
答案 0 :(得分:2)
SQLite被设计为嵌入式数据库,即与“真正的”编程语言一起使用。 为了能够使用这样的动态结构,你必须超出SQLite本身:
cursor.execute("SELECT name FROM sqlite_master")
rows = cursor.fetchall()
for row in rows:
sql = "SELECT ... FROM {} WHERE ...".format(row[0])
cursor.execute(sql)