Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 如何创建多个";:记忆体:";sqlite3中的数据库_Python 2.7_Sqlite - Fatal编程技术网

Python 2.7 如何创建多个";:记忆体:";sqlite3中的数据库

Python 2.7 如何创建多个";:记忆体:";sqlite3中的数据库,python-2.7,sqlite,Python 2.7,Sqlite,我正在尝试使用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=shar

我正在尝试使用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")
这会导致三个独立的内存中数据库吗?这似乎创建了三个到共享内存数据库的连接,这不是我想要的

然后,我继续在数据库(磁盘或内存中)上创建游标,方法是:

如果无法使用多个内存中数据库,我最好使用RAM磁盘数据库(如第一个代码块中所述),然后在这些连接上执行
“PRAGMA journal\u mode=memory”

如中所述,使用您正在使用的URI格式指定共享缓存将导致同一进程中的所有连接使用相同的数据库。如果需要三个独立的内存实例,请使用命名的内存数据库,并使用
文件:?mode=memory&cache=shared
作为连接字符串

从网页上

如果单个进程中需要两个或多个不同但可共享的内存数据库,则mode=memory query参数可与URI文件名一起使用,以创建命名的内存数据库:

rc=sqlite3\u open(“文件:memdb1?模式=内存&缓存=共享”,&db)

当内存中的数据库以这种方式命名时,它将只与另一个使用完全相同名称的连接共享其缓存


“似乎创造”是什么意思?如何验证和/或测试?如果我使用
“file::memory:?cache=shared”
创建三个db连接,那么在尝试对其中一个数据库中创建的表执行
插入时,我会得到
操作错误('数据库已锁定')
cur_db1 = db1.cursor()
cur_db2 = db2.cursor()
cur_db3 = db3.cursor()