Windows認証とpyodbcライブラリを使用してMS SQL Serverを接続するにはどうすればよいですか?
MS AccessとSQL Server Management Studioを介して接続できますが、Pythonの場合は、正常な接続ODBC= stringを取得できません。
ここに私が試したものがあります('Trusted_Connection=yes'
):
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='[system_name]',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes', uid='me',
driver='{SQL Server}', server='localhost',
database='[databasename]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
uid='me', pwd='[windows_pass]', database='[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}', server='localhost',
database='[server_name]\[database_name]')
pyodbc.connect('Trusted_Connection=yes',
driver='{SQL Server}',
database='[server_name]\[database_name]')
接続文字列は、セミコロン(;
)引数のセパレータとして。
作業例:
import pyodbc
cnxn = pyodbc.connect(r'Driver={SQL Server};Server=.\SQLEXPRESS;Database=myDB;Trusted_Connection=yes;')
cursor = cnxn.cursor()
cursor.execute("SELECT LastName FROM myContacts")
while 1:
row = cursor.fetchone()
if not row:
break
print(row.LastName)
cnxn.close()
多数のパラメーターを持つ接続文字列の場合、以下は同じことを実現しますが、多少読みやすい方法で行います。
conn_str = (
r'Driver={SQL Server};'
r'Server=.\SQLEXPRESS;'
r'Database=myDB;'
r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)
(個々の文字列コンポーネントの間にはコンマがないことに注意してください。)
Windows認証は、キーワードを使用して指定することもできます。受け入れられた答えと機能的に異なるものはありません。コードのフォーマットが少し簡単になると思います。
cnxn = connect(driver='{SQL Server}', server='localhost', database='test',
trusted_connection='yes')
ここでローカルホストを使用したソリューションを見て、何かを追加したかっただけです。私の経験では、SQL Serverにはこれに関する問題があり、そのODBCドライバまたはサービス自体かどうかはわからず、ローカルを指定したくない場合は(ローカル)の使用を好むマシン名。
cnxn = connect(driver='{SQL Server}', server='(local)', database='test',
trusted_connection='yes')