Я играю с ядром SQLAlchemy в Python, и я много раз читал документацию и все еще нуждаюсь в пояснениях по поводу engine.execute()
против connection.execute()
.
Насколько я понимаю, engine.execute()
- это то же самое, что и connection.execute()
, за которым следует connection.close()
.
Руководства, которым я следовал, позволили мне использовать это в моем коде:
Начальная настройка в скрипте
try:
engine = db.create_engine("postgres://user:pass@ip/dbname", connect_args={'connect_timeout': 5})
connection = engine.connect()
metadata = db.MetaData()
except exc.OperationalError:
print_error(f":: Could not connect to {db_ip}!")
sys.exit()
Затем у меня есть функции, которые обрабатывают мой доступ к базе данных, например:
def add_user(a_username):
query = db.insert(table_users).values(username=a_username)
connection.execute(query)
Должен ли я звонить connection.close()
до окончания моего сценария? Или это достаточно эффективно? Мне лучше закрыть соединение в конце add_user()
, или это неэффективно?
Если мне нужно позвонить connection.close()
до окончания работы сценария, означает ли это, что прерывание сценария приведет к зависанию соединений в моей базе данных Postgres?