是否有一种正式的方式来检查所选择的文件是否为sqlite3中的数据库?



我在python中使用sqlite3。目前我正在使用以下代码

try:
con = sqlite3.connect(filename)
cur = con.cursor()
# run a fake query to test if the file selected is really a database
cur.execute("SELECT DISTINCT id FROM handle ORDER BY id DESC")
except:
eel.invalidFile()
else:
ExamineTable.printPhoneNum(con)

,它工作得很好。我正在运行一个假的查询来测试一个真实的数据库,因为我发现如果没有这一行,用户可以选择不是数据库的文件,并且当sqlite3试图连接时不会抛出异常。这可能是设计的,但我想知道是否有一种更正式的方式来检查而不运行虚拟查询?

PRAGMA integrity_checkPRAGMA quick_check可用于验证文件是否为有效的SQLite数据库。如果文件不是一个有效的SQLite数据库,或者它有文档中描述的任何问题,这将引发sqlite3.DatabaseError

con = sqlite3.connect(filename)
cur = con.cursor()
try:
cur.execute("PRAGMA integrity_check")
except sqlite3.DatabaseError:
eel.invalidFile()
con.close()
else:
ExamineTable.printPhoneNum(con)

参见:如何判断sqlite数据库文件是否有效?

相关内容

  • 没有找到相关文章

最新更新