Him*_*pta 5 python sql-server pandas
我试图使用python从sql服务器上的存储过程中提取一些数据.
这是我的代码:
import datetime as dt
import pyodbc
import pandas as pd
conn = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server Native client 11.0}',server = '*****, database = '**')
pd.read_sql("EXEC ******** '20140528'",conn)
Run Code Online (Sandbox Code Playgroud)
我得到错误:TypeError:'NoneType'对象不可迭代
我怀疑这是因为我在sql表中有一个值为NULL的单元格,但不确定这是否是我收到错误的真正原因.我使用相同的代码运行了许多sql语句,没有任何错误.
这是追溯:
In[39]: pd.read_sql("EXEC [dbo].[] '20140528'",conn)
Traceback (most recent call last):
File "C:*", line 3032, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-39-68fb1c956dd7>", line 1, in <module>
pd.read_sql("EXEC [dbo].[] '20140528'",conn)
File "C:*", line 467, in read_sql
chunksize=chunksize
File "c:***", line 1404, in read_query
columns = [col_desc[0] for col_desc in cursor.description]
TypeError: 'NoneType' object is not iterable
Run Code Online (Sandbox Code Playgroud)
Cor*_*one 12
你的sproc需要
SET NOCOUNT ON;
Run Code Online (Sandbox Code Playgroud)
如果没有这sql将返回rowcount调用,它将返回没有列名称,导致NoneType错误.
小智 6
pd.read_sql()期望返回输出,并尝试迭代输出;那就是TypeError来自的地方。相反,使用游标对象执行:
import datetime as dt
import pyodbc
import pandas as pd
conn = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server Native client 11.0}',server = '*****', database = '**')
cur = conn.cursor()
cur.execute("EXEC ******** '20140528'")
Run Code Online (Sandbox Code Playgroud)
您不会收到任何输出,但由于不会收到任何输出,因此您的代码运行时应该不会出现错误。
| 归档时间: |
|
| 查看次数: |
6559 次 |
| 最近记录: |