Обе эти работы:SQLAlchemy: двигатели и соединения управления
sel = select([self.tbl])
rec = self.engine.execute(sel)
и
sel = select([self.tbl])
conn = self.engine.connect()
rec = conn.execute(sel)
Какова основная разница?
Обе эти работы:SQLAlchemy: двигатели и соединения управления
sel = select([self.tbl])
rec = self.engine.execute(sel)
и
sel = select([self.tbl])
conn = self.engine.connect()
rec = conn.execute(sel)
Какова основная разница?
По the docs:
connect()
Двигатель может быть использован непосредственно для выдачи SQL в базе данных. Наиболее общий путь первого заготовить ресурс соединения, который вы получаете с помощью метода Engine.connect():
connection = engine.connect()
result = connection.execute("select username from users")
for row in result:
print("username:", row['username'])
connection.close()
соединения является экземпляром Connection, который является прокси-объектом для фактическое соединение DBAPI. Соединение DBAPI извлекается из пула подключений в момент создания соединения.
execute()
выше процедура может быть выполнена в сокращенном образом с помощью метода Execute() самого двигателя:
result = engine.execute("select username from users") for row in result:
print("username:", row['username'])
Где выше, метод execute() приобретает новый Соединение по своему принадлежит, выполняет оператор с этим объектом и возвращает ResultProxy. В этом случае ResultProxy содержит специальный флаг, известный как close_with_result, который указывает, что когда его базовый курсор DBAPI закрыт, сам объект соединения также закрыт, что снова возвращает соединение DBAPI с пулом соединений, освобождая транзакционные Ресурсы.