python - 错误: 'NoneType' object is not iterable when read_sql

标签 python sql pandas

在互联网上寻找解决方案。

这是代码:

import pyodbc
import pandas as pd
conn = pyodbc.connect("Driver={SQL Server};"
                         "Server=Server;"
                         "Trusted_Connection=yes;")
cursor = conn.cursor()
query = """
SET
   nocount 
   ON;
USE database;
SELECT
   * 
FROM
   (
      SELECT
         db.column1 AS col1,
         db.column2 AS col2,
         db.column3 AS col3,
         CASE
            WHEN
               db.column4 IS NULL 
            THEN
               0 
            ELSE
               1 
         END
         AS col4, 
         db.column5 AS col5 
      FROM
         TABLE AS tab 
         INNER JOIN
            data as db 
            ON ( operator ) 
   )
   AS sivola 
WHERE
   sivola.col2 > x 
ORDER BY
   sivola.col2 ASC
"""
df = pd.read_sql(query, conn)

虽然我正在使用SET nocount ON; (正如许多帖子中所建议的那样),我仍然收到错误 TypeError: 'NoneType' object is not iterable

有什么可行的解决方案吗?

编辑: 完整追溯

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-56-f01b80801200> in <module>()
     82 logging.error('Starting query from BL \n')
     83 
---> 84 df = pd.read_sql(query, conn)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\sql.py in read_sql(sql, con, index_col, coerce_float, params, parse_dates, columns, chunksize)
    379             sql, index_col=index_col, params=params,
    380             coerce_float=coerce_float, parse_dates=parse_dates,
--> 381             chunksize=chunksize)
    382 
    383     try:

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\io\sql.py in read_query(self, sql, index_col, coerce_float, params, parse_dates, chunksize)
   1434         args = _convert_params(sql, params)
   1435         cursor = self.execute(*args)
-> 1436         columns = [col_desc[0] for col_desc in cursor.description]
   1437 
   1438         if chunksize is not None:

TypeError: 'NoneType' object is not iterable

最佳答案

你可以删除 设置 没有计数 在; 使用数据库;

我认为从连接中获取结果的方式是不正确的。要么使用光标并执行任务而不获取任何内容,要么像您一样仅使用连接中的选择来获取内容,但没有这些行。

关于python - 错误: 'NoneType' object is not iterable when read_sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995873/

相关文章:

c# - 保存从 EAV 数据库结构加载序列化对象

python - 如何将一个DataFrame随机拆分成几个更小的DataFrame?

python - 如何在没有用户交互的情况下显示模式 QDialog?

SQL Server 2005 数据类型

mysql - 如何使用单个查询更新表中多个列的值?

python - Pandas :无法导入名称兼容

python - 如何获取 Pandas 表中所有命名类别的最大值

python - 通过 id 删除 Python 列表中的重复项

Python 在第 k 个项目和非第 k 个项目中拆分列表/数组

python - 避免在 Python 中进行不必要的切片复制