如何在SQLite中使用python语句作为SELECT条件?

时间:2012-02-10 06:42:43

标签: python sql sqlite

通常,我们只能使用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,那该怎么办?我认为这是一个有用的案例。

2 个答案:

答案 0 :(得分:0)

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

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

SQLite是一个关系型DBMS,而不是一个对象DBMS。如果您需要一个对象DBMS,则SQLite是该任务的错误产品。

答案 1 :(得分:0)

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

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

预约使用不正确的表名和列名。