为什么SQL Server数据库引擎未与SQLAlchemy引擎连接?

时间:2018-10-30 19:51:44

标签: python sql-server sqlalchemy

我正在尝试使用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;')

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果其他所有方法均失败,我将尝试在creatordocumentation)中使用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中,它将起作用。