我正在尝试使用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:"作为连接字符串。

或在同一网页中也有描述...

09-10 01:48
查看更多