Я предпочтительно хочу использовать менеджер контекста, чтобы я мог db.connect (), передать db функции с db в качестве параметра, а затем выполнить db.close () в операторе finally. Например,
@contextmanager
def db_connection(db_path):
db = SqliteDatabase(db_path)
try:
db.connect()
yield db
except Exception as e:
print(e)
finally:
db.close()
, который я затем могу использовать для вызова функции, подобной этой:
def setup_tables(db):
db.create_tables([User, Business, Payment])
with db_connection("test.db") as db:
setup_tables(db)
Однако это не сработает, потому что сначала нужно определить схему, которая требует подключения к базе данных использует соединение в своем экземпляре для запроса вещей без указания соединения, как если бы вы использовали модуль sqlite следующим образом:
def create_user(email):
User.insert(email=email).execute()
Можно ли просто всегда оставлять соединение с базой данных включенным или как решить эту проблему?