我在尝试连接到SQL服务器时收到错误“TypeError:类型'NoneType'的参数不可迭代”。我相信错误是在我连接到SQL服务器本身的行上生成的,因为我的第二个print语句从未使用过,但我可能错了。
我正在使用pymysql-2.1.3和python 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
我不知道为什么会发生这种情况 - connect函数完全遵循pymssql文档。
如果有帮助,我正在导入以下库:
import os
from os import getenv
import pymssql
import subprocess
我在此问题中删除了数据库凭据,但我知道它们可以工作,因为我可以通过管理工作室连接到SQL服务器。
有谁知道为什么这段代码不起作用?
此代码包含在名为“connect_to_sql():”的函数中,然后在之后使用,但是下面的一些代码是敏感的,所以我只删除了这些特定的行。我希望这已经足够了。
答案 0 :(得分:3)
代码执行到达时
conn = pymssql.connect(server, user, password, database)
抛出此错误,因为服务器的值为“无”
您已在
处设置此值server = getenv("####")
但有时很多情况下 getenv失败并且没有返回。这取决于系统/平台(尤其是Windows系统)
您可以尝试打印出服务器和用户的值
server = getenv("####")
print(server)
user = getenv("####")
print(user)
我的经验是,他们返回无,因此连接不会通过。由于错误不明确,我们倾向于认为问题是在连接。