alunote’s blog

C#,SQL,JavaScriptなどの技術メモをゆっくり投稿しています。

【Python】pyodbcでOperationalError:'08001'が発生した際に確認すること

PythonSQLServerに接続する際、pyodbcを利用する方法があります。
Python超初心者の自分は、各設定内容を共通ファイル(config.ini)から取得し
pyodbc.connectで下記エラーを発生させたので、二度と同じ過ちを繰り返さぬよう記録します。

【エラー内容】
pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (xxx)')

【前提条件】
各設定内容は共通ファイル(config.ini)から取得する。

def db_connect(sect):
    # config.ini取得
    configifile = (r"config.ini")
    config_ini = configparser.ConfigParser()
    config_ini.read(configifile, encoding="utf-8")
    # 各設定値指定
    instance = config_ini[sect]["instance"]
    db = config_ini[sect]["db"]
    user = config_ini[sect]["user"]
    pasword = config_ini[sect]["pasword"]
    # SQLServer接続
    connection =    "DRIVER={SQL Server}" + ";"\
                    "SERVER=" + instance + ";"\
                    "DATABASE=" + db + ";"\
                    "uid=" + user + ";" \
                    "pwd=" + pasword
    print(connection)
    return pyodbc.connect(connection)

con = db_connect("DB")
sql = "select * from TEST"
df = pandas.read_sql(sql, con)
print(df)
[DB]
instance = "xxxx\xxxx"
user = "xxxx"
pasword = "xxxx"
db = "xxxx"

【解決方法】
config.iniの設定値からダブルクォーテーションを削除する

[DB]
instance = xxxx\xxxx
user = xxxx
pasword = xxxx
db = xxxx

config.iniから値を取得した場合にダブルクォーテーションごと設定されるとは思いませんでした。
このような誤りをするのは自分くらいだと思いますが、困っている人もいると思いますのでメモします。