Python SQLAlchemy:未找到数据源名称且未指定默认驱动程序

Den*_*tes 7 python sql-server sqlalchemy

使用Python:当使用pyodbc连接到SQL Server时,一切正常,但是当我切换到sqlalchemy时,连接失败,给我错误消息:

('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)

我的代码:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=servername;DATABASE=dbname;UID=username;PWD=password')
engine = sqlalchemy.create_engine("mssql+pyodbc://username:password@servername/dbname")
Run Code Online (Sandbox Code Playgroud)

我在代码中找不到错误,并且不理解为什么第一个选项有效,但第二个选项没有.

非常感谢帮助!

rgk*_*rgk 12

也遇到这个问题,将驱动程序查询字符串附加到我的连接路径的末尾:

"mssql+pyodbc://" + uname + ":" + pword + "@" + server + "/" + dbname + "?driver=SQL+Server"
Run Code Online (Sandbox Code Playgroud)

  • 我使用了所有方法进行连接,但没有成功,直到我在连接字符串末尾使用“?driver=SQL+Server”。感谢您的贡献。如果您能解释为什么当我们不使用您提到的特定结束字符串时它会失败,那就太好了。 (3认同)
  • 这比显式切换到`pymssql`更好 (2认同)
  • 我在 Windows 机器上使用 python 3.7 和 SQLAlchemy==1.3.13。我发现 ```...driver=SQL+Server``` 有效,但 ```...driver=ODBC+Driver+17+for+SQL+Server``` 无效。 (2认同)

Den*_*tes 6

它使用pymssql而不是pyodbc起作用。

使用pip安装pymssql,然后将代码更改为:

engine = sqlalchemy.create_engine("mssql+pymssql://username:password@servername/dbname")
Run Code Online (Sandbox Code Playgroud)