我真不理解,为什么sqlite-utils的查询操作是如此之简单
它有查询表、查询视图、查询记录的操作。
查询记录
通常我们使用的查询记录,格式是这样的
for row in db["ath"].rows:
print(row)
这个相当于做了一个 select * from ath
如果要加上where,把row改为rows_where
那就是
for row in db["ath"].rows_where("age > ?",[20]):
# 或
for row in db["ath"].rows_where("age > :age",{"age":20}):
如果只要显示某姓名和年龄列
for row in db["ath"].rows_where(select='name, age'):
如果按年龄排序
for row in db["ath"].rows_where(order_by="age"):
还可以加入limit=和offset=,也是写在where中,下面写个组合
for row in db["ath"].rows_where("age > 20 ",order_by="age desc",limit=1.offset=20):
根据ID取值
try:
row = db["ath"].get(5)
except NotFoundError:
print("不存在主键为5的记录")
但是这个要注意,如果ID不存在,是会抛出异常的。虽然可以写try,但我想不通,什么时候会只知道ID来查询记录。
统计
这个比较简单,就是count和count_where,下面这行看懂就都懂了。
db["ath"].count_where("age > ?", [20])
还有一些查询是通过最近的插入操作才能做的,暂时不在这里写了。
另外,如果要查询关联表数据,多对多表的数据,我看了下,好像只能用SQL语句写,sqlite-utils没有独立的方法。