我想编写一个查询来检查SQLite数据库中的所有表是否有一条信息,以便简化事后诊断(性能无关紧要)。
我希望编写一个查询,该查询使用sqlite_master表获取表列表,然后在一个查询中对其进行查询:
SELECT Name FROM sqlite_master WHERE Type = 'table' AND ( SELECT count(*) FROM Name WHERE conditions ) > 0;
但是,当尝试执行这种查询样式时,我收到一条错误消息no such table: Name。是否有其他语法允许这样做,还是根本不支持它?
no such table: Name
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)