通常,我们只能使用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。我认为这是一个有用的案例。
请您参考如下方法:
您必须在 SQL 和 Python 代码之间分担负载。您需要正确地构建表中的数据,以便 SQL 可以获取大部分 if,然后记录检查其余的复杂内容。
您应该能够在 SQLite 中获得大部分内容,以便 SQL 查询能够正常工作。你只需要分解你的数据。例如,您的带有 x 和 y 字段的点需要在 SQLite 中拆分为 2 个字段,如 P_X 和 P_Y。
SQLite 是关系型 DBMS 而不是对象 DBMS。如果您需要一个对象 DBMS,那么 SQLite 是不适合该任务的产品。
