sqlite3 в Python - PullRequest
       28

sqlite3 в Python

7 голосов
/ 04 октября 2009

Как проверить, существует ли файл базы данных или нет? И, если он существует, как мне проверить, есть ли у него уже определенная таблица или нет?

1 Ответ

10 голосов
/ 04 октября 2009

Чтобы узнать, существует ли база данных, вы можете sqlite3.connect к файлу, который, по вашему мнению, содержит базу данных, и попробовать выполнить запрос к ней. Если это не база данных, вы получите эту ошибку:

>>> c.execute("SELECT * FROM tbl")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.DatabaseError: file is encrypted or is not a database

sqlite3.connect создаст базу данных, если она не существует; как @johnp указывает в комментариях, os.path.exists скажет вам, существует ли файл.

Чтобы проверить существующие таблицы, вы запрашиваете у sqlite_master . Например:

>>> def foo(name):
...     for row in c.execute("SELECT name FROM sqlite_master WHERE type='table'"):
...             if row == (name,):
...                     return True
...     return False
... 
>>> foo("tz_data")
True
>>> foo("asdf")
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...