2016-06-29 120 views
2

当我试图连接到SQL服务器时,出现错误“TypeError:类型'NoneType'的参数不可迭代。我相信这个错误是在我连接到SQL服务器本身的线上生成的,因为我的第二个打印语句从未被使用过,尽管我可能是错的。当连接到SQL服务器时,Python pymssql错误“TypeError:类型'NoneType'的参数不可迭代”

我使用pymysql-2.1.3和3.5.1蟒

server = getenv("####") 
user = getenv("####") 
password = getenv("####") 
database = getenv("####") 

print("hi") 
conn = pymssql.connect(server, user, password, database) 
print("hi2") 
cursor = conn.cursor() 

cursor.execute("####" 
       "SELECT Name, SourceTable, SourceTableID FROM dbo.Attachment WHERE Name LIKE '%icad%'") 


conn.close() 
print("Connect to SQL complete") 

这就导致错误:

Traceback (most recent call last): 
hi 
    File "C:/convert.py", line 62, in <module> 
    connect_to_sql() 
    File "C:convert.py", line 15, in connect_to_sql 
    conn = pymssql.connect(server, user, password, database) 
    File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734) 
    File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c:21821) 
    File "_mssql.pyx", line 552, in _mssql.MSSQLConnection.__init__ (_mssql.c:5891) 
TypeError: argument of type 'NoneType' is not iterable 

Process finished with exit code 1 

我不知道为什么会这样 - 的连接函数完全遵循pymssql文档。

我进口下列库,如果有帮助:

import os 
from os import getenv 
import pymssql 
import subprocess 

我已经在这个问题上删除的数据库凭据,但是我知道他们的工作,因为我能够通过管理Studio连接到SQL服务器。

有谁知道为什么这段代码不起作用?

该代码包含在一个名为'connect_to_sql():'的函数中,然后用于以后,但以下代码中的一部分非常敏感,所以我只剪切了这些特定的代码。我希望这已经足够了。

+0

您是否正在使用pymssql的2.x版本? – Pedru

+0

是的,我使用的版本是pymssql-2.1.3。更新问题。 –

+0

您是否在调用pymssql.connect()之前尝试打印出凭证?也许你正在传递一些意想不到的结果 – Pedru

回答

1

当代码执行到

conn = pymssql.connect(server, user, password, database) 

引发此错误,因为服务器的值是“无”

您已经设定在

server = getenv("####") 

此值但很多时候恰巧getenv失败并且没有返回。这是系统/平台的依赖(尤其是Windows系统)

你可以尝试针对服务器和用户打印出值

server = getenv("####") 
print(server) 
user = getenv("####") 
print(user) 

我的经验是,他们返回None,因此连接不经过。由于错误不明确,我们倾向于认为问题在于连接。

相关问题