gpt4 book ai didi

python - 如果 db 文件不存在,如何使 sqlite3.connect() 失败?

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:53 26 4
gpt4 key购买 nike

sqlite3.connect() 将创建不存在的 db 文件。我希望它失败。有办法吗?

最佳答案

第一种方法是使用 os.path.isfile 检查文件路径:

import sqlite3
import os

my_path = 'database.db' # or 'absolute_path/to/the/file'
if os.path.isfile(my_path):
sqlite3.connect(my_path)

否则,您可以使用 uri=True 参数来指定打开 mode 并在文件丢失时引发错误。如果没有 mode,文件不存在就会创建,所以你可以使用 rwro 来避免新文件:

  • 以读写模式打开:

    sqlite3.connect('file:database.db?mode=rw', uri=True)
  • 以只读模式打开:

    sqlite3.connect('file:database.db?mode=ro', uri=True)

如果文件不存在,这将引发以下错误:

sqlite3.OperationalError: unable to open database file

您可以在文档的这些章节中找到有关这些模式的更多信息:

https://www.sqlite.org/uri.html

https://www.sqlite.org/c3ref/open.html#urifilenamesinsqlite3open


为了能够打开带有特殊字符(URI 的特殊字符)的文件,另一种方法是使用以下方法:

import pathlib

my_db = pathlib.Path('path/to/data?ba=se.db').as_uri()
sqlite3.connect('{}?mode=rw'.format(my_db), uri=True)

# or sqlite3.connect(f'{my_db}?mode=rw', uri=True) with f-string

关于python - 如果 db 文件不存在,如何使 sqlite3.connect() 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57828286/

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