С peewee, как мне открывать и закрывать соединение после каждого запроса? - PullRequest
0 голосов
/ 21 апреля 2020

Я предпочтительно хочу использовать менеджер контекста, чтобы я мог 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()

Можно ли просто всегда оставлять соединение с базой данных включенным или как решить эту проблему?

...