Python pymssql错误“;TypeError:参数类型为';非类型';是不合适的”;连接到SQL server时

Python pymssql错误“;TypeError:参数类型为';非类型';是不合适的”;连接到SQL server时,python,pymssql,Python,Pymssql,我在尝试连接到SQL server时遇到错误“TypeError:类型为'NoneType'的参数不可编辑”。我相信错误是在我连接到SQL server本身的线路上产生的,因为我的第二个print语句从未使用过,尽管我可能是错的 我使用的是pymysql-2.1.3和python3.5.1 server = getenv("####") user = getenv("####") password = getenv("####") database = getenv("####") print

我在尝试连接到SQL server时遇到错误“TypeError:类型为'NoneType'的参数不可编辑”。我相信错误是在我连接到SQL server本身的线路上产生的,因为我的第二个print语句从未使用过,尽管我可能是错的

我使用的是pymysql-2.1.3和python3.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
我已经删除了这个问题中的数据库凭据,但是我知道它们可以工作,因为我可以通过ManagementStudio连接到SQL server

有人知道为什么这个代码不起作用吗


这段代码包含在一个名为“connect_to_sql():”的函数中,然后在后面使用,但是下面的一些代码是敏感的,所以我只删掉了这些特定的行。我希望这足够了。

当代码执行达到

conn = pymssql.connect(server, user, password, database)
引发此错误的原因是服务器的值为“无”

您已在上为此设置了值

server = getenv("####")
但很多时候,getenv会失败,并返回none。这取决于系统/平台(尤其是Windows系统)

您可以尝试打印服务器和用户的值

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

我的经验是,它们不返回任何结果,因此连接不会通过。由于错误不清楚,我们倾向于假设问题在于连接。

您使用的是pymssql的2.x版吗?是的,我使用的是pymssql-2.1.3版。正在更新问题。在调用pymssql.connect()之前,您是否尝试打印凭据?也许你通过了一些出乎意料的事情我以为getenv(#######)正在工作,但你知道他们怎么说假设。。我实际上是通过了“无”作为凭证。删除“getenv()”解决了此问题。谢谢你的建议,这让我省去了一下午的头痛。很高兴我能帮上忙=)
server = getenv("####")
print(server)
user = getenv("####")
print(user)