我很好奇在使用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完成后它是否关闭?
答案 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>