【发布时间】:2018-12-29 13:25:42
【问题描述】:
我正在构建的应用程序需要一个单独的例程和线程需要访问的 sqlite 内存数据库。我很难做到这一点。
我明白:
file:my_db?mode=memory&cache=shared', uri=True
应该创建一个可以通过单独的连接修改和访问的内存数据库。
这是我返回错误的测试: “sqlite3.OperationalError:没有这样的表:my_table”
下面的代码保存为“test_create.py”:
import sqlite3
def create_a_table():
db = sqlite3.connect('file:my_db?mode=memory&cache=shared', uri=True)
cursor = db.cursor()
cursor.execute('''
CREATE TABLE my_table(id INTEGER PRIMARY KEY, some_data TEXT)
''')
db.commit()
db.close()
上面的代码在单独的文件中导入到下面的代码中:
import sqlite3
import test_create
test_create.create_a_table()
db = sqlite3.connect('file:my_db')
cursor = db.cursor()
# add a row of data
cursor.execute('''INSERT INTO my_table(some_data) VALUES(?)''', ("a bit of data",))
db.commit()
上面的代码工作正常,写在一个文件中。谁能建议我如何将代码保存在单独的文件中,这有望让我建立多个单独的连接?
注意:我不保存数据库。谢谢。
编辑:如果您想使用线程,请确保启用以下选项。 check_same_thread=False
例如
db = sqlite3.connect('file:my_db?mode=memory&cache=shared', check_same_thread=False, uri=True)
【问题讨论】: