pandas.read_sql_query()引发TypeError:'NoneType'对象不可迭代

问题描述 投票:1回答:1

我正在使用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中运行得很好。

我正在使用pandas.read_sql_query函数从一些sql文件中读取。一个查询在我已经指出的某个特定位引发错误。 (python位-没什么异国情调,可以与其他......>

python sql-server python-3.x pandas pyodbc
1个回答
0
投票

一直以来的问题是,我一直在忽略/忽略SSMS中的警告消息,我认为这会导致游标不是查询,而pyodbc会引发ProgrammingError“无结果。以前的SQL并非查询。”从而导致pandas.read_sql_query()崩溃。

警告:

© www.soinside.com 2019 - 2024. All rights reserved.