我尝试连接到Microsoft sql服务器
我在FreeTDS上使用pyodbc。
我的脚本:
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)")
我认为翻译后的错误消息是:
Fehler bei der Anmeldungfürden Benutzer'myUserName'=登录失败 用户“ myUserName”。
所以我认为用户名或密码错误。 但是通过tsql使用相同的凭据进行连接就可以了。
tsql -S MyServerDSN -U myUsername -P myPassword
使用
[MyServer]
host = myServername
instance = myInstanceName
工作正常,我可以选择myDatabaseName并获取结果。
答案 0 :(得分:2)
仔细阅读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)
请注意,您应该指定实例名称或端口号,而不要同时指定两者。