即使关闭了连接,熊猫read_sql_query仍在后台运行?

时间:2019-11-06 17:10:05

标签: python sql pandas dataframe pyodbc

我的连接已关闭:

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

1 个答案:

答案 0 :(得分:1)

这取决于您作为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!!