【问题标题】:How to use python statement as SELECT condition in SQLite?如何在 SQLite 中使用 python 语句作为 SELECT 条件?
【发布时间】:2012-03-02 16:29:02
【问题描述】:

通常,我们只能使用 SQL 语句作为 SELECT 条件(使用 WHERE 子句)。但是,有时使用 python(或任何调用 SQL 的语言)语句作为 SELECT 条件很有用。

例如,有一个示例in the document of sqlite3 module of python,其中结构Point 被存储到一个表中。但是,使用结构Point 很难查询表。说,我想做SELECT p FROM table WHERE P.x=4,它选择x坐标等于4的所有点。但是SELECT语句不起作用,因为P.x是python语句而不是SQL语句。

另一个例子是当 SELECT 条件对于 SQL 语言来说太复杂时。说,我想选择 mod 4 为 3 的所有整数或类似的东西。

那么,有没有这样做的想法?谢谢!

编辑:关于 zam664 的回答,第一个示例肯定可以使用 P_X 和 P_Y。但是,如果 p 是一个未知长度的列表(可以使用适配器存储在表中)并且我想SELECT p FROM table WHERE 2 in p。我认为这是一个有用的案例。

【问题讨论】:

  • 只是一个注释;由于数据库不会执行 Python 而是仅执行 SQL(即 Python 查询需要自动转换为 SQL),如果您用 Python 编写任何过于复杂而无法用 SQL 表达的查询,它们仍然会过于复杂。在复杂性方面,Python 唯一可以帮助您的事情是在您获得结果后自动在数据库中执行部分查询,并在代码中执行部分操作。

标签: python sql sqlite


【解决方案1】:

您必须在 SQL 和 python 代码之间分担负载。您需要正确地构造表中的数据,以便 SQL 可以获取大部分 if 然后记录检查其余的复杂内容。

您应该能够在 SQLite 中获取大部分内容,以便 SQL 查询能够正常工作。你只需要分解你的数据。例如,您的 x 和 y 字段需要在 SQLite 中拆分为 P_X 和 P_Y 等 2 个字段。

SQLite 是关系 DBMS,而不是对象 DBMS。如果您需要一个对象 DBMS,那么 SQLite 是不适合该任务的产品。

【讨论】:

  • 感谢您的回答。但是,在某些情况下,这种拆分数据方法可能会失败。有关详细信息,请参阅编辑。
【解决方案2】:

由于数据存储为 ;分隔的字符串列表,您应该可以执行以下操作:

SELECT point FROM test WHERE point LIKE '%x=4%

保留使用不正确的表名和列名。

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    相关资源
    最近更新 更多