Sqlite Queue(Python) – 简单的SQLite队列

文章目录[隐藏]

老物搬运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!

分享到

KAAAsS

喜欢二次元的程序员,喜欢发发教程,或者偶尔开坑。(←然而并不打算填)

评论

还没有评论。

在此评论中不能使用 HTML 标签。