2016-06-29 26 views
2

Ich erhalte den Fehler "TypeError: Argument vom Typ 'NoneType' ist nicht iterable" beim Versuch, eine Verbindung zu einem SQL Server herzustellen . Ich glaube, der Fehler wird in der Zeile erzeugt, in der ich mich mit dem SQL-Server selbst verbinde, da meine zweite Druckanweisung nie verwendet wird, obwohl ich falsch liegen könnte.Python pymssql Fehler "TypeError: Argument des Typs 'NoneType' ist nicht iterable" beim Verbinden mit SQL-Server

Ich bin mit pymysql-2.1.3 und 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") 

Diese dann in dem Fehler führt:

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 

Ich habe keine Ahnung, warum dies geschieht - die connect Funktion folgt genau der Pymssql-Dokumentation.

Ich importieren die folgenden Bibliotheken, wenn es hilft:

import os 
from os import getenv 
import pymssql 
import subprocess 

ich die Datenbank-Anmeldeinformationen in dieser Frage entfernt haben, aber ich weiß, dass sie arbeiten, wie ich an den SQL-Server über das Management Studio eine Verbindung der Lage bin, .

Weiß jemand, warum dieser Code nicht funktioniert?

Dieser Code ist in einer Funktion namens "connect_to_sql():" enthalten und wird dann später verwendet, jedoch einige der folgenden Code ist empfindlich, so habe ich nur diese bestimmten Zeilen ausschneiden. Ich hoffe es ist genug.

+0

Verwenden Sie Version 2.x von Pymssql? – Pedru

+0

Ja, die Version, die ich verwende, ist pymssql-2.1.3. Aktualisiere Frage. –

+0

Haben Sie versucht, die Anmeldeinformationen auszudrucken, bevor Sie pymssql.connect() aufrufen? Vielleicht haben Sie etwas unerwartetes passiert – Pedru

Antwort

1

Wenn die Codeausführung erreicht

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

dieser Fehler ausgelöst wird, weil Wert von Server ist 'Keine'

Sie bereits den Wert für diese bei

server = getenv("####") 

gesetzt haben aber viele Male passiert es so, dass getenv fehlschlägt und keine zurückgibt. Dies ist System/plattformabhängig (vor allem Windows-Systeme)

Sie versuchen, Werte ausdrucken könnte für Server und Benutzer

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

Meine Erfahrung war, sie None zurück, damit die Verbindung über nicht gehen. Da der Fehler nicht klar ist, gehen wir davon aus, dass das Problem bei der Verbindung liegt.