当试图连接到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
我不知道为什么会发生这种情况-连接函数完全遵循pymssql文档。
如果有帮助的话,我正在导入以下库:
import os
from os import getenv
import pymssql
import subprocess
我已经在这个问题中删除了数据库凭据,但是我知道它们可以工作,因为我能够通过管理工作室连接到SQL服务器。
有人知道为什么这段代码不工作吗?
这段代码包含在一个名为'connect_to_sql():'的函数中,然后在之后使用,但是下面的一些代码是敏感的,所以我只剪掉了这些特定的行。我希望这足够了。
当代码执行到达
conn = pymssql.connect(server, user, password, database)
这个错误被抛出,因为服务器的值是'None'
你已经把它的值设置在
server = getenv("####")
但是很多时候,getenv失败并且返回none。这是系统/平台相关的(特别是Windows系统)
你可以尝试打印出服务器和用户的值
server = getenv("####")
print(server)
user = getenv("####")
print(user)
我的经验是,它们返回None,因此连接不能通过。由于错误不清楚,我们倾向于假设问题出在连接上。