与数据库的多个SQLite连接:内存:

时间:2016-04-06 10:00:46

标签: python sqlite peewee

是否可以从不同的线程访问内存中的SQLite数据库?

在下面的示例代码中,我在内存中创建了一个SQLite数据库并创建了一个表。当我现在转到不同的执行上下文时,我认为当我转到另一个线程时我必须这样做,创建的表不再存在了。如果我打开一个基于文件的SQLite数据库,表就会在那里。

我可以为内存数据库实现相同的行为吗?

from peewee import *
db = SqliteDatabase(':memory:')

class BaseModel(Model):
    class Meta:
        database = db

class Names(BaseModel):
    name = CharField(unique=True)

print(Names.table_exists())  # this returns False 
Names.create_table()
print(Names.table_exists())  # this returns True

print id(db.get_conn())  # Our main thread's connection.

with db.execution_context():
    print(Names.table_exists())  # going to another context, this returns False if we are in :memory: and True if we work on a file *.db
    print id(db.get_conn())  # A separate connection.

print id(db.get_conn())  # Back to the original connection.

1 个答案:

答案 0 :(得分:4)

工作!!

cacheDB = SqliteDatabase('file:cachedb?mode = memory& cache = shared')

链接