使用sqlalchemy

时间:2017-05-01 15:58:56

标签: python database sqlalchemy connection

我很好奇在使用read_sql_query通过pandas读取查询时关闭连接的正确方法。我一直在用:

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('credentials')
data = pd.read_sql_query(sql_query, engine)

虽然传统用法似乎是这样的:

engine = create_engine('credentials')
connection = engine.connect()
result = connection.execute(users_table.select())
for row in result:
    # ....
connection.close()

如果我没有像第二种方法那样使用engine.connect()创建“连接”,我该如何关闭连接?或者,在pd.read_sql_query完成后它是否关闭?

1 个答案:

答案 0 :(得分:0)

来自http://docs.sqlalchemy.org/en/latest/core/connections.html

  

引擎通常是预先建立的永久固定装置,并在应用程序的整个生命周期内维护。它不打算在每个连接的基础上创建和处理;它是一个注册表,它既维护一个连接池,又维护有关正在使用的数据库和DBAPI的配置信息,以及每个数据库资源的某种程度的内部缓存。

Engine对象懒惰地从内部池按需分配Connections。当您调用各个Connection对象的close方法,只返回到该池,或者"签入"时,这些连接不一定会关闭。

如果明确需要关闭连接,则应检入所有连接,然后调用engine.dispose(),或者您可能需要更改Engine对象使用的池策略,请参阅http://docs.sqlalchemy.org/en/latest/core/pooling.html#pool-switching。< / p>