Проверка инициализации БД. Python, sqlite
Ребят, помогите разобраться, каким образом проверить инициализирована ли бд?
import os
import sqlite3
conn = sqlite3.connect(os.path.join('finance.db'))
cursor = conn.cursor()
def init_db():
with open('create_db.sql', 'r') as f:
sql = f.read()
cursor.executescript(sql)
conn.commit()
def check_init():
info = cursor.execute("SELECT name FROM sqlite_master "
"WHERE type='table' AND name='categories'")
table_exists = info.fetchall()
print(table_exists) # Возвращает []
if table_exists is None:
init_db()
check_init()
Я перепробовал разные варианты, но как-то не пришел к какой-то конкретике, то исключение прилетает, то пустой список. Все бы ничего, но у меня в sql скрипте создаются две таблички, наличие которых проверяется с помощью IF NOT EXISTS, тут проблем нет, но в том же скрипте одна из табличек тут же заполняется данными. Вот здесь и вываливаются проблемы, при повторной ининциализации одна из табличек пытается впихнуть в себя невпихуемое, бросаясь исключениями.
Хотелось бы найти способ проверить, существует ли хоть одна табличка в бд, и если нет, то только в том случае делать init().