我正在使用Python语言开发SQLAlchemy核心,我已经多次阅读了文档,仍然需要澄清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 DB上的连接挂起?
发布于 2019-01-13 22:56:19
我发现this post有助于更好地理解sqlalchemy中的不同交互范例,如果您还没有阅读它的话。
关于何时关闭数据库连接的问题:为每个语句执行创建和关闭连接确实是非常低效的。但是,您应该确保您的应用程序的全局流中没有连接泄漏。
https://stackoverflow.com/questions/54162691
复制相似问题