![](/img/trans.png)
[英]How to connect to Teradata Server using sqlalchemy and DSN less connection
[英]SQLAlchemy PyODBC MS SQL Server DSN-less connection
通過pyodbc使用python 2.7和MS odbc驅動程序。 我的連接字符串如下所示:
MSSQL + pyodbc:// myuser的:將mypass @ SERVERIP / INSTANCENAME司機= ODBC驅動程序+ + 11 +的+ SQL +服務器
我登錄失敗。 但是,如果在Microsoft sql服務器管理工作室中使用相同的憑據和“ serverip \\ instancename”,則可以連接。
使我抓狂的是幾天前,這個相同的連接字符串對我有用,但連接到同一台計算機上的另一個sql服務器實例。 因此,我試圖弄清楚的是如何對其進行故障排除。
感謝您的指導。
我剛剛經歷了這個問題,它失敗的原因是端口,每個實例都偵聽不同的端口,因此您需要指出該實例的端口。
我的代碼是:
DBserver='host.abc.nt'
DBengine='devenv'
DBport='####'
DBname='mydb'
DBDriver='ODBC Driver 13 for SQL Server'
DBuser='user'
DBpwd='pass'
DBuserpass = DBuser if len(DBuser) > 0 else ''
DBuserpass = DBuserpass + ':' + DBpwd if len(DBuser) > 0 else ''
if len(DBengine) > 0:
DBserver = DBserver + '\\' + DBengine
engine = sa.create_engine(f'''mssql+pyodbc://{DBuserpass}@{DBserver}:{DBport}/{DBname}?driver={DBDriver}''')
query=engine.execute('SELECT DB_NAME(), @@SERVERNAME')
query.fetchall()
[('mydb', 'host\\devenv')]
創建引擎之后,除了sqlalchemy之外就不需要其他庫了
但是,如果您想知道實例的端口,則可以使用: gordthompson / sqlserverport中的Github存儲庫
或在Windows中,使用SQL Studio(或其他任何方式)進行連接,然后選擇一些數據庫,同時在CMD中運行netstat來獲取端口:
C:\Users\pla>netstat -qfa | findstr host
TCP 10.0.0.1:##87 host.abc.nt:4096 ESTABLISHED
在學習sqlalchemy時,我遇到了同樣的問題。 這種方法對我有用:
import urllib
params = urllib.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
這來自sqlalchemy文檔。 它似乎與登錄憑據無關,但是錯誤消息對我來說是相同的,並且可以正常工作。
參考http://docs.sqlalchemy.org/en/latest/dialects/mssql.html#pass-through-exact-pyodbc-string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.