[英]How to backup Peewee database (SqliteQueueDatabase) programatically?
[英]Python Peewee SqliteQueueDatabase table does not get created
我正在使用SQLite数据库开发多线程应用程序。 我已经进行了一些研究,似乎SqliteQueueDatabase可以提供所需的并发处理。 我已经仔细阅读了文档,但似乎还没有完全了解如何启动和启动数据库。
from peewee import *
from playhouse.sqliteq import SqliteQueueDatabase
db = SqliteQueueDatabase(':memory:')
class Prime(Model):
num = IntegerField()
class Meta:
database = db
db.start()
db.connect()
db.create_tables([Prime])
print db.get_tables() # prints []
db.stop()
在上面的示例中启动数据库后,我尝试为模型创建表,但未创建该表。 我想念什么? 我试图找到一个涵盖整个生命周期但无法实现的peewee&SqliteQueueDatabase示例。
您正在使用内存数据库。 内存数据库使用每个线程的连接。 因此,除非您专门使用共享内存模式(必须查阅sqlite文档),否则您会很不走运。
使用基于文件的数据库,您的示例将运行良好。
我遇到了这个问题,似乎读查询在create_tables()
之前完成。
我的解决方法是引发背对背db.stop()
db.start()
调用。 强制执行代码以等待所有数据库写查询完成。
from peewee import *
from playhouse.sqliteq import SqliteQueueDatabase
db = SqliteQueueDatabase('db.sqlite3')
class Prime(Model):
num = IntegerField()
class Meta:
database = db
db.start()
db.connect()
db.create_tables([Prime])
db.stop() # Wait for create_tables() to complete
db.start() # Continue execution
print db.get_tables()
db.stop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.