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 由于多次并发写入,数据库磁盘映像的格式不正确_Python_Sqlite - Fatal编程技术网

Python 由于多次并发写入,数据库磁盘映像的格式不正确

Python 由于多次并发写入,数据库磁盘映像的格式不正确,python,sqlite,Python,Sqlite,我在具有Lustre文件系统的集群上运行许多(18k)批处理作业。作业同时提交,每个作业大约需要3秒钟,它们使用sqlite3python模块编写结果。代码的编写部分非常简单: with sqlite3.connect(name, timeout=900) as conn: conn.execute( "insert into someTable values (?, ?)", (value1, value2)) 但很多工作都会抛出一个例外: sqlite3.D

我在具有Lustre文件系统的集群上运行许多(18k)批处理作业。作业同时提交,每个作业大约需要3秒钟,它们使用
sqlite3
python模块编写结果。代码的编写部分非常简单:

with sqlite3.connect(name, timeout=900) as conn: 
    conn.execute(
        "insert into someTable values (?, ?)", (value1, value2))   
但很多工作都会抛出一个例外:

sqlite3.DatabaseError: database disk image is malformed
有时

sqlite3.OperationalError: unable to open database file

我猜这与许多作业在写入文件时锁定文件有关,但我的印象是,
sqlite3
应该知道耐心等待文件释放。我的错误可能是由于并发写入过多造成的吗?我怎样才能修好它

SQLite不支持分布式文件系统上的存储。并发访问需要锁定,并且不会在这样的系统中传输


您必须转移到支持网络模型的数据库,例如MySQL或PostgreSQL

顺便说一句,sqlite不支持并发编写。最好不要使用sqlite3;使用真正的数据库,比如postgresql,可能会节省很多时间…@RapolasK:是的。你将数据库存储在网络驱动器上吗?@MartijnPieters:Lustre FileSystems这很令人失望,我想我会回到旧方法(每个作业将输出写入自己的文件,稍后聚合)