我正在尝试使用sqlite3创建多个内存数据库(如果可能)。
对于磁盘数据库,我将执行以下操作:
import sqlite3
db1 = sqlite3.connect('/mnt/tmp/db1.db')
db2 = sqlite3.connect('/mnt/tmp/db2.db')
db3 = sqlite3.connect('/mnt/tmp/db3.db')
如果我改为:
db1 = sqlite3.connect("file::memory:?cache=shared")
db2 = sqlite3.connect("file::memory:?cache=shared")
db3 = sqlite3.connect("file::memory:?cache=shared")
这会导致三个独立的内存数据库吗?这似乎创建了到共享内存数据库的三个连接,这不是我想要的。
然后,我使用以下命令在数据库(磁盘或内存中)上创建游标:
cur_db1 = db1.cursor()
cur_db2 = db2.cursor()
cur_db3 = db3.cursor()
如果不可能有多个内存数据库,我的最佳选择是使用RAM磁盘数据库(如我的第一个代码块中所示),然后在这些连接上执行
"PRAGMA journal_mode=MEMORY"
吗? 最佳答案
如online docs中所述,使用与您正在使用的URI格式指定共享缓存将导致同一进程中的所有连接使用同一数据库。如果要使用三个单独的内存实例,请使用":memory:"
作为连接字符串。
或在同一网页中也有描述...