Pandas read_sql_query 即使连接已关闭,仍然 运行 在后台?

Pandas read_sql_query still running in the background even though connection is closed?

我有一个关闭的连接:

Config = dict(server = serverSample,
              port = 1433,
              username = username_input,
              password = password_input)
conn_str = (‘Server ={server},  {port}; + ‘TRUSTED_CONNECTION=yes’)
conn = pyodbc.connect(
    r’Driver={ODBC Driver 13 for SQL Server};’ + conn_str.format(**config)
)
Do = pd.read_sql_query(query, conn)
conn.close()

在使用 read_sql_query 方法后,我立即将数据放入 DataFrame

出于某种原因,数据人员通知我我的连接仍在持续一段时间。

close 方法是否实际上停止了来自 运行 的 SQL,或者我必须执行其他操作以停止服务器中来自 运行 的查询?

我正在使用 pyodbc

这取决于您将什么作为 conn 对象传递给 read_sql_query 方法调用。

  1. 如果你传递 Connection 对象应该就足够了,但问题可能出在你关闭连接的地方。也许这段代码无法访问。

  2. 如果传递Engine对象。你应该处理连接:

conn.dispose()
  1. 您也可以尝试关闭池化。 Details are in the thread:
import pyodbc


pyodbc.pooling = False
  1. 另一种选择是将连接用作 context_managercommit 并且不关闭连接。 This approach is preferred by pyodbc:
import pyodbc


conn = pyodbc.connect(config) 
with conn:
    crs = conn.cursor()
    do_stuff
    # conn.commit() will automatically be called when Python leaves the outer `with` statement
    # Neither crs.close() nor conn.close() will be called upon leaving the the `with` statement!!