python - 即使连接关闭,Pandas read_sql_query 仍在后台运行?
问题描述
我有一个封闭的连接:
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
方法调用的内容。
如果你传递
Connection
对象应该足够了,但问题可能出在你关闭连接的地方。也许此代码无法访问。如果你传递
Engine
对象。您应该处理连接:
conn.dispose()
- 您也可以尝试关闭池。详细信息在线程中:
import pyodbc
pyodbc.pooling = False
- 另一种选择是将连接用作
context_manager
而不commit
关闭连接。这种方法是首选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!!
推荐阅读
- html - 在 html/css 中选择列表项的问题
- python - 文件未在开发中显示
- python - 将 CSV 文件数据与文本文件数据匹配
- sql - SQL 中的两个表内连接产生的 SQL 表的最大大小是多少?
- html - 尝试使用 CSS 将 div 向右对齐
- python - pandas concat 但从左侧 df 获取重复的键行
- javascript - 在 JS 脚本中显示数据库信息
- heroku - 为什么即使 url 是正确的前端和后端,Heroku 也会返回 Cannot GET?
- python - 如何将一个大的 json 文件拆分为多个较小的文件?
- r - ROC函数的输入应该是什么预测格式