最近要用Python开发个小东西,其中要用数据库。作为懒人的我,懒得写太多的SQL语句前后的套路,于是在网上找了一下,发现了sqlite-utils这个包,安装后,边看手册边用,有一些小小的体会,这里和大家分享一下:
sqlite-utils的变化
通过pip,导入使用的是3.36版,网上的教程基本是2019年左右的,开始我以“向下兼容”的态度,按这些教程学习了一下,发现完全不同,主要有:
很多功能已不适用,最典型的就是update……where语句,现在已不可用。
另外,它对字段的要求,也不再支持char字段,所有字符串,都采取text字段的形式来保存。
原来写的功能比较少,增加了许多,比如upsert,m2m关联等。
其他关于格式,也完全不同了,下面只能感觉到多少就写多少吧。
最简单的使用方式
sqlite-utils的包名字叫sqlite_utils,在引用后,从层次来讲,就是库,表,这个和sqlite是一致的。
from sqlite_utils import *
# 在当前目录下,如果没有scroe.db文件,就会新建并打开
db=Database('score.db')
# 查询,输出格式类似
#{'id': 1, 'name': '张', 'match_id': 1}
#{'id': 2, 'name': '李', 'match_id': 2}
rows=db.query("select * from tbtest where match_id<3")
for row in rows:
print(row)
# 增删改
db.execute("update tbtest set name='王' where id=2")
db.conn.commit()
为了防止注入,查询也可以采取参数的方式
rows=db.query("select * from tbtest where match_id< ? ", [3]) #这个参数是列表
db.execute("update tbtest set name='王' where id= ?" , [2])
# 或者
rows=db.query("select * from ath where id> :id",{"id":2}) #这个参数是字典
学会这一招,稍有点SQL基础的,就都没问题了。