【发布时间】:2020-01-11 23:33:43
【问题描述】:
我正在尝试在 python 中使用 pyodbc 运行 SQL 命令。 其中 SQL 命令包含多个 SELECT 命令和 IF 语句。
但我收到如下错误
columns = [col_desc[0] for col_desc in cursor.description]
TypeError: 'NoneType' object is not iterable
import pyodbc
import pandas as pd
conn = pyodbc.connect("DRIVER={SQL Server};"
"SERVER=server_name;"
"DATABASE=master;"
"Trusted_Connection=yes;")
cursor = conn.cursor()
script="""
If object_id ('tempdb..#Temp1')is not null
drop table #Temp1
Select distinct a1.some_ID into #Temp1
from DOC.dbo.Document_tbl (NOLOCK)a1
from #Temp1 a1
If object_id ('tempdb..#Temp2')is not null
Drop table #Temp2
select distinct v2.some_data
into #Temp2 from tbl_name (nolock) v2
If object_id ('tempdb..#Results')is not null
drop table #Results
select distinct a1.*,b1.####
into #Results
from #Temp1 a1
left join #Temp2 b1 on a1.## = b1.##
Select * from #Results
"""
df = pd.read_sql(script, cnxn)
writer = pd.ExcelWriter('result.xlsx')
df.to_excel(writer, sheet_name ='bar')
writer.save()
【问题讨论】:
-
报错说光标里面什么都没有,基本上就是你什么都没有返回。
-
请删除那些
NOLOCK查询提示,除非您完全了解为什么需要它们以及使用它们的风险,包括检索无效数据和不存在的数据 -
谢谢戈德·汤普森
标签: python sql-server pandas pyodbc