【发布时间】:2017-11-17 16:27:06
【问题描述】:
我正在尝试将数据从 SQL Server 读取到 Pandas 数据框中。下面是代码。
def get_data(size):
con = pyodbc.connect(r'driver={SQL Server}; server=SPROD_RPT01; database=Reporting')
cur = con.cursor()
db_cmd = "select distinct top %s * from dbo.KrishAnalyticsAllCalls" %size
res = cur.execute(db_cmd)
sql_out = pd.read_sql_query(db_cmd, con, chunksize=10**6)
frames = [chunk for chunk in sql_out]
df_sql = pd.concat(frames)
return df_sql
df = get_data(5000000)
我收到以下错误:
pandas.io.sql.DatabaseError: sql 'select distinct 执行失败 前 500000 * 来自 dbo.KrishAnalyticsAllCalls': ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for 另一个 hstmt (0) (SQLExecDirectW)')
我之前执行过该函数,并用ctrl+k 中断了执行,因为我想对函数进行更改。现在,在我尝试执行该功能时进行更改后,我收到了上述错误。
由于我不知道有任何 IPython 内核运行在函数中执行查询,因此我该如何终止该连接/IPython 内核?
【问题讨论】:
-
如果您在 Python shell/IDE 中工作,那么您可能需要将其关闭并重新启动以终止“僵尸”连接。
-
是的,我已经这样做了。我也试过关闭整个计算机,但仍然出现同样的错误。
标签: python sql-server pandas pyodbc