Чтобы узнать, существует ли база данных, вы можете 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