gpt4 book ai didi

python - pandas.read_sql_query() 抛出 TypeError : 'NoneType' object is not iterable

转载 作者:行者123 更新时间:2023-12-01 06:27:12 40 4
gpt4 key购买 nike

我正在使用 pandas.read_sql_query 函数读取一些 sql 文件。一个查询在我挑出的某一特定位处抛出错误。

(python 位 - 没有什么奇怪的并且可以与其他查询一起使用)

@contextmanager
def open_db_connection(connection_string):
pyodbc.pooling = False
connection = pyodbc.connect(connection_string)

try:
yield connection
except pyodbc.DatabaseError as err:
error, = err.args
sys.stderr.write(error.message)
finally:
connection.close()

noCount = """ SET NOCOUNT ON; """
with open_db_connection(connection_string) as conn:
res = pd.read_sql_query(noCount+queryObj, conn)

下面的 sql 语句抛出一个错误,我不知道为什么会这样。前面的语句和各种临时表可以工作,并且可以使用 pandas.read_sql_query() 进行收集,但是在接下来的位中它会中断。


IF OBJECT_ID('tempdb..#test1') IS NOT NULL DROP TABLE #test1;
select t.PositionID, b.SecurityID
into #test1
from #tmp as t
inner join placeholder.dbo.items as b on (b.PositionID = t.PositionID and b.StudyDate = '20191230')
where t.ast = 'eq';

IF OBJECT_ID('tempdb..#test2') IS NOT NULL DROP TABLE #test2;
select t.PositionID,
case
when count(i.beta_index)=0 then 1
else count(i.beta_index)
end as noIndex
into #test2
from #test1 as t
left join #beta_index as i on (t.SecurityID = i.isin)
group by t.PositionID;

select * from #test2

这应该从 test2 返回数据。但需要注意的是 - 它在 SQL Server Management Studio 中执行和运行得非常好。

最佳答案

问题一直是我忽略了 SSMS 中的警告消息,我相信这会导致游标不是查询,并且 pyodbc 抛出编程错误“没有结果。以前的 SQL 不是查询。”因此 pandas.read_sql_query() 崩溃。

警告:

Warning: Null value is eliminated by an aggregate or other SET operation.

查询开头的“SET ANSI_WARNINGS OFF”解决了该问题。

我不认为这是最好的做法,尽管就我而言,我可以忽略这些警告。

关于python - pandas.read_sql_query() 抛出 TypeError : 'NoneType' object is not iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60078342/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com