老物搬运23333
简介
基于python实现的sqlite队列,方便的处理sqlite并发。并且包含一个十分简洁好用的SQL语句包装。
认真的讲,我真的不会python。这个库纯粹是因为一时兴起外加一个小脑洞。而且大部分代码都是在手机的QPython上完成的,于是质量可想而知(不过我尽量都改掉了QAQ)。
示例
一个简单的队列可以在两行代码实现。
import sqlite_queue queue = sqlite_queue.SqliteQueue('test.db') queue.start()
以下是一个完整的示例:
import sqlite_queue queue = sqlite_queue.SqliteQueue('test.db') queue.setDaemon(False) # 默认为守护线程 queue.start() # 测试INSERT for i in range(12,15): queue.register_execute("INSERT INTO stocks VALUES ('2017-02-04','BUY','RHAT',?,35.14)", (i,) , callback=lambda lst_row, data: print(lst_row)) # 测试SELECT queue.register_execute("SELECT * FROM stocks", callback=lambda lst_row, data: print(data)) # 包装SQL语句SELECT queue.select('stocks').where('price', '>=', 30) \ .order('price').page(1, 5)\ .register(callback=lambda lst_row, data: print(data))
其实神奇的用法还有一些,尤其是关于SQL语句的包装,示例位于example/sql_builder.py。这里节选一些好了:
# INSERT语句 queue.insert('stocks')\ .data({'trans': 'BUY', 'symbol': 'RHAT', 'price': 35.14, 'qty': 100, 'date': '2017-01-01'}).register() # 两种不同写法的SELECT语句 queue.select('stocks').where('price', '>=', 30).where('trans', ['BUY', 'SELL'])\ .where('date', '><', ['2017-02-01', '2017-12-31']).order('price').register(lambda data: print(data)) queue.select('stocks').where({ 'price[>=]': 30, 'trans': ['BUY', 'SELL'], 'date[><]': ['2017-02-01', '2017-12-31']}).order('price').register(lambda data: print(data))
where支持链式和dict对象两种写法,我个人还是比较喜欢的。第二种写法借鉴了medoo这个PHP库。
其实回调也是很棒的,比如INSERT语句就可以返回当且操作的行数。具体的文档看这里:WIKI-回调函数。
对了,peewee也是支持哒~
项目地址
https://gitee.com/kaaass/sqlite_queue_python
欢迎各位前往Star、Fork!
评论