Во-первых, ваш пример фальшивый и неправильный.Peewee не открывает соединение, когда вы просто создаете объект запроса.Проверьте это:
In [1]: from peewee import *
In [2]: db = SqliteDatabase(':memory:')
In [3]: class User(Model):
...: username = TextField()
...: class Meta:
...: database = db
...:
In [4]: db.is_closed() # Should be True.
Out[4]: True
In [5]: query = User.select().where(User.username == 'charlie')
In [6]: db.is_closed() # Still TRUE, we haven't evaluated anything yet!
Out[6]: True
Итак, во-первых, ваш пример даже не верен.Вам нужно оценить запрос на его выполнение.
Чтобы ответить на остальную часть этого вопроса:
Peewee не предоставляет механизм для запрещения неявных соединений.Если вы попытаетесь выполнить запрос, Peewee откроет соединение, если оно не существует.
Я бы предположил, что оно должно быть очень ясным, когда вы выполняете запрос, а следовательно - когда вам нужно открытьподключение.Если этого недостаточно, тогда создайте подкласс и переопределите метод Database.cursor()
.
РЕДАКТИРОВАТЬ:
Даже если никто не просил об этом раньше, реализовать такую простую вещь, которую яЯ добавил эту функцию в Peewee.Будет содержаться в следующем выпуске.