如何在SQLite中将python语句用作SELECT条件?
通常情况下,我们只能使用SQL语句作为选择条件,也就是用WHERE子句来筛选数据。不过,有时候用Python(或者其他能调用SQL的语言)语句作为选择条件会更方便。
举个例子,在Python的sqlite3模块的文档里,有一个例子是把一个叫Point
的结构存储到一个表里。但是,用这个Point
结构来查询表就比较麻烦。比如,我想执行SELECT p FROM table WHERE P.x=4
,也就是选择所有x坐标等于4的点。但是这个SELECT
语句不行,因为P.x
是Python的语句,而不是SQL的语句。
还有一个例子是,当选择条件对SQL语言来说太复杂时。比如,我想选择所有模4等于3的整数,类似这样的需求。
那么,有没有什么办法可以做到这一点呢?谢谢!
补充:关于zam664的回答,确实可以在第一个例子中使用P_X和P_Y。但是,如果p是一个未知长度的列表(可以通过适配器存储在表中),我想执行SELECT p FROM table WHERE 2 in p
,我觉得这也是一个很有用的情况。
2 个回答
0
因为数据是以分号(;)分隔的字符串列表存储的,所以你可以这样做:
SELECT point FROM test WHERE point LIKE '%x=4%
这里假设你使用的表名和列名是正确的。
0
你需要把工作分配给SQL和Python代码。首先,要把你的数据表设计得合理,这样SQL就能处理大部分数据,而对于复杂的部分再用Python来检查。
大部分情况下,你可以在SQLite中完成这些工作,这样SQL查询就能正常运行。你只需要把数据拆分开来。例如,你的点的坐标x和y需要在SQLite中分成两个字段,分别叫做P_X和P_Y。
SQLite是一个关系型数据库管理系统,不是面向对象的数据库管理系统。如果你需要的是面向对象的数据库管理系统,那么SQLite就不适合这个任务。