import os
import psutil
import sqlite3
con = sqlite3.connect("temp.db")
def is_open(path):
for proc in psutil.process_iter():
try:
files = proc.get_open_files()
if files:
for _file in files:
if _file.path == path:
return True
except psutil.NoSuchProcess as err:
print(err)
return False
con = sqlite3.connect("temp.db")
path = os.path.abspath("temp.db")
print(is_open(path))
con.close()
print(is_open(path))
3条答案
按热度按时间41ik7eoe1#
“试一试……除了”也很管用
Out:真的
输出:假
ztmd8pv52#
1.使用
psutils
检查数据库文件是否被进程使用:产出:
1.对于读取,操作系统无论如何都应该缓存文件,以便您可以读取,如果您尝试写入,则会引发以下错误:
Sqlite3.OperationalError:尝试写入只读数据库
正如您所说,在运行
sqlite3.connect
之前检查db
是否存在:您不能强制
sqlite3.connect
函数不创建db文件。k5ifujac3#
这是我一直在使用的一个简单的变通办法:
例如:
然后,您可以将此OpenConn()放在任何需要连接的函数的开头,它将根据需要打开一个。