我的连接已关闭:
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
。
答案 0 :(得分:1)
这取决于您作为conn
对象传递给read_sql_query
方法调用的内容。
如果传递Connection
对象,就足够了,但是问题可能出在关闭连接的地方。也许此代码无法访问。
如果您传递Engine
对象。您应该处理该连接:
conn.dispose()
import pyodbc
pyodbc.pooling = False
context_manager
和commit
,而不关闭连接。 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!!