2016-06-29 10 views
2

SQL Serverに接続しようとすると "TypeError:型 'NoneType'の引数が反復不可能です。 。私は間違っていても、私の2番目のprint文は使用されないので、SQLサーバ自体に接続する行にエラーが生成されていると思います。Python pymssqlエラー "TypeError:SQLサーバーに接続するときに '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 

私はこの質問では、データベースの認証情報を削除した、しかし私は、私が管理スタジオを経由してSQLサーバーに接続できていて、彼らは仕事を知っています。

誰でもこのコードが機能しない理由を知っていますか?

このコードは 'connect_to_sql():'という名前の関数に含まれていますが、後で使用されますが、次のコードの一部は機密扱いになっています。私はそれが十分であることを望む。

+0

バージョン2.xのpymssqlを使用していますか? – Pedru

+0

はい、使用しているバージョンはpymssql-2.1.3です。質問を更新しています。 –

+0

pymssql.connect()を呼び出す前に資格情報を印刷しようとしましたか?おそらく予期せぬものを通り過ぎているかもしれません。 – Pedru

答えて

1

コードの実行は、サーバの値はあなたが

server = getenv("####") 

で、このために値を既に設定されている「なし」

しないため、このエラーがスローされ

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

に達します多くの場合、多くの場合、getenvが失敗し、に失敗し、何も返されません。これは、依存システム/プラットフォームです(特にWindowsシステム)

あなたは、サーバーとユーザー

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

の値をプリントアウトしてみてください可能性が私の経験では、それゆえ、接続が通過しない、彼らはNoneを返す、となっています。エラーは明確ではないため、接続時に問題が発生すると想定する傾向があります。

関連する問題