微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在SQLite查询中使用返回的列值作为表名?

我想编写一个查询,检查sqlite数据库中的所有表以获取一条信息,以简化事件后诊断(性能无关紧要).

我希望编写一个查询,使用the sqlite_master table获取表列表,然后在一个查询查询它们:

SELECT Name 
FROM sqlite_master
WHERE Type = 'table' AND (
    SELECT count(*)
    FROM Name
    WHERE conditions
    ) > 0;

但是,当尝试执行此样式的查询时,我收到错误没有这样的表:名称.是否有允许这种情况的替代语法,或者根本不支持

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)

原文地址:https://www.jb51.cc/sqlite/197887.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐