【发布时间】: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 唯一可以帮助您的事情是在您获得结果后自动在数据库中执行部分查询,并在代码中执行部分操作。