我尝试连接到microsoft sql server
我使用pyodbc和FreeTDS。
我的剧本:
import pyodbc
cnxn = pyodbc.connect(
'DRIVER={FreeTDS};SERVER=myServerAdress;INSTANCE =myInstanceName;PORT=myPortNumber;DATABASE=myDatabasename;UID=myUserName;PWD=myPassword')
cursor = cnxn.cursor()
找到服务器但我收到错误:
pyodbc.ProgrammingError: ('42000', "[42000] [unixODBC][FreeTDS][SQL Server]Fehler bei der Anmeldung für den Benutzer 'myUserName'. (18456) (SQLDriverConnect)")
我认为翻译的错误消息是:
用户'myUserName'登录失败=用户'myUserName'登录失败。
所以我认为用户名或密码错了。但是通过tsql连接相同的凭据可以正常工作。
tsql -S MyServerDSN -U myUsername -P myPassword
同
[MyServer]
host = myServername
instance = myInstanceName
工作正常,我可以选择myDatabaseName并获得结果。
仔细阅读FreeTDS ODBC connection attributes documentation。没有INSTANCE=
属性。它说
要指定Microsoft SQL Server实例,请使用
server\instance
形式。
这对我有用:
cnxn_str = (
r'DRIVER=FreeTDS;'
r'SERVER=192.168.1.128\SQLEXPRESS;'
r'DATABASE=myDb;'
r'UID=sa;PWD=whatever;'
)
cnxn = pyodbc.connect(cnxn_str)
另请注意,您应指定实例名称或端口号,而不是两者。