我正在尝试使用SqlAlchemy连接到python平台上的SQL Server数据库。我正在使用Windows身份验证连接到我的SQL Server。在连接服务器时,SqlAlchemy引擎将引发错误:
以下是我已实现的代码:
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
import pyodbc
Driver Server Name Instance Database
DATABASE_URL='mssql+pyodbc://DESKTOP-N32LSOV\PRANAV/AdventureworksDW2016CTP3?trusted_connection=yes'
Engine = create_engine(DATABASE_URL)
cn = Engine.connect()
运行上述代码时,会产生此错误:
错误:sqlalchemy.exc.InterfaceError:(pyodbc.InterfaceError)('IM002','[IM002] [Microsoft] [ODBC驱动程序管理器]找不到数据源名称并且未指定默认驱动程序(0)(SQLDriverConnect)' )(此错误的背景位于http://sqlalche.me/e/rvf5)
我尝试使用pymssql驱动程序代替pyodbc驱动程序,但错误仍然存在。相反,当我尝试使用以下语法连接到时,它将连接。我想我在mssql网址中缺少某些属性。
pyodbc.connect(r'Driver={SQL Server};Server=DESKTOP-N32LSOV\PRANAV;Database=master;Trusted_Connection=yes;')
任何帮助将不胜感激。
答案 0 :(得分:0)
如果其他所有方法均失败,我将尝试在creator
(documentation)中使用create_engine
参数:
def creator():
return pyodbc.connect(r'Driver={SQL Server};Server=DESKTOP-N32LSOV\PRANAV;Database=master;Trusted_Connection=yes;')
Engine = create_engine('mssql://', creator=creator)
使用creator=
绕过URL中指定的所有连接参数,因此您只应传递信息以指定URL中的DB方言。
看看mssql+pyodbc
dialect/driver documentation,还有?odbc_connect
选项:
import urllib.parse
CONNECTION_STRING = r'Driver={SQL Server};Server=DESKTOP-N32LSOV\PRANAV;Database=master;Trusted_Connection=yes;'
Engine = create_engine('mssql+pyodbc:///?odbc_connect=' + urllib.parse.quote_plus(CONNECTION_STRING))
答案 1 :(得分:0)
您需要同时指定要使用ODBC和要使用的ODBC驱动程序。
engine = sqlalchemy.create_engine('mssql+pyodbc://localhost/Sandbox?driver=SQL+Server+Native+Client+11.0')
如果将driver=
部分添加到数据库url中,它将起作用。