【问题标题】:SQLAlchemy core engine.execute() vs connection.execute()SQLAlchemy 核心 engine.execute() 与 connection.execute()
【发布时间】:2019-06-07 07:55:32
【问题描述】:

我正在使用 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 连接挂起?

【问题讨论】:

    标签: python database sqlalchemy


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 2017-10-23
      • 2021-08-13
      • 2011-12-17
      • 2015-06-04
      • 2015-05-16
      相关资源
      最近更新 更多