gpt4 book ai didi

python - 可以在 NFS 文件系统上锁定 sqlite 文件吗?

转载 作者:IT王子 更新时间:2023-10-29 06:19:30 26 4
gpt4 key购买 nike

假设有两个 python 脚本想要将数据写入同一个表,该表使用 sqlite3 模块存储在 SQLite 文件中。 SQLite 文件存储在 NFS 文件系统中。在SQLite-FAQ我阅读:

SQLite uses reader/writer locks to control access to the database. [...] But use caution: this locking mechanism might not work correctly if the database file is kept on an NFS filesystem. This is because fcntl() file locking is broken on many NFS implementations. You should avoid putting SQLite database files on NFS if multiple processes might try to access the file at the same time.

这是否意味着根本不可能,或者是否有某种方法可以确保一个进程等待另一个进程完成?

INSERT 并不复杂。只是一些:

INSERT_STATEMENT = "INSERT INTO some_table (row, col, val) VALUES (?, ?, ?)"
connection.executemany(INSERT_STATEMENT, triples)

并且插入的集合是不相交的。

另一个问题:当两个进程试图写入同一个表或当它们试图写入同一个数据库(一个文件)时,是否会发生 NFS 问题?让每个进程在同一数据库(文件)中创建自己的表并写入其中是否是一种解决方法?

最佳答案

不要将 SQLite 与 NFS 一起使用。它是如此简单。 NFS 语义不同于常规文件系统,并且更宽松。你最终会腐败。 SQLite 用户邮件列表中不时有人发布他们的“解决方法”。尽管它们似乎在短期内有效,但它们从未起作用。

关于python - 可以在 NFS 文件系统上锁定 sqlite 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9907429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com