Python Pandas read_sql_query“'NoneType'对象不可迭代”错误
问题内容:
我正在尝试执行sql并将结果保存到Panda Dataframe中。这是我的代码。
dbserver = 'validserver'
filename = 'myquery.sql'
database ='validdb'
conn = pyodbc.connect(r'Driver={SQL Server};Server=' + dbserver +
';Database=' + database + ';Trusted_Connection=yes;')
fd = open(filename, 'r')
resultingData = pd.read_sql_query(fd.read(),conn)
fd.close()
conn.close()
行pd.read_sql_query(fd.read(),conn)
继续给我错误“ NoneType”对象不可迭代”错误
我可以在带有结果的sql服务器窗口中运行myquery.sql。我有SET NOCOUNT ON;
任何线索,我在这里错过了什么,我该如何调试?myquery.sql有几个#temp表和联接。结果大约有75,000行。谢谢大家
更新:
我无法发布确切的查询,但这就是查询的样子。
SET NOCOUNT ON;
SELECT SourceID, PeriodEndDate = MAX(PeriodEndDate)
INTO #SourceDate
FROM table1
WHERE PERIODENDDATE <= 20171229
GROUP BY SourceID
SELECT RS.*, R.TypeCode INTO #final
FROM table2 RS
INNER JOIN #SourceDate SD ON SD.id = RS.id
INNER JOIN table3 R ON R.id = RS.id
select * from #final
问题答案:
据我了解,read_sql_query()
无论如何只会返回您第一条陈述的结果。在这种情况下,SET NOCOUNT ON;
如您所见,它将返回None
,这就是代码失败的原因。IMO您应该优化SQL语句以在过程中返回一个表而不是多个表(因为我只想从#final中读取)。
如果您确实想在一个数据帧中有多个sql查询,则可以使用lists
和split
如该线程中所述: