首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy核心engine.execute() vs connection.execute()

SQLAlchemy核心engine.execute() vs connection.execute()
EN

Stack Overflow用户
提问于 2019-01-13 02:35:07
回答 1查看 3.9K关注 0票数 3

我正在使用Python语言开发SQLAlchemy核心,我已经多次阅读了文档,仍然需要澄清engine.execute()connection.execute()之间的关系。

据我所知,engine.execute()等同于做connection.execute(),然后是connection.close()

我遵循的教程让我可以在我的代码中使用它:

脚本中的初始设置

代码语言:javascript
复制
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()

然后,我有处理数据库访问的函数,例如:

代码语言:javascript
复制
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上的连接挂起?

EN

回答 1

Stack Overflow用户

发布于 2019-01-13 22:56:19

我发现this post有助于更好地理解sqlalchemy中的不同交互范例,如果您还没有阅读它的话。

关于何时关闭数据库连接的问题:为每个语句执行创建和关闭连接确实是非常低效的。但是,您应该确保您的应用程序的全局流中没有连接泄漏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54162691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档