GCP SQL Server Python 连接(sqlalchemy)错误

问题描述 投票:0回答:1

我有以下代码:

import sqlalchemy as sa

db_connect_string = 'driver://username:password@server/db'

engine = sa.create_engine(db_connect_string)

connection = engine.connect()

连接字符串中的驱动程序是

mssql
,用户名是
sqlserver
,服务器是GCP公共服务器IP

在GCP控制台的连接下,启用了公共IP连接,并且我当前的机器IP已列入白名单,我测试连接是SSMS,并且我能够通过SSMS成功连接到服务器

我收到以下错误:

sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
(Background on this error at: https://sqlalche.me/e/20/rvf5)

我尝试了多个其他驱动程序(例如

mssql+pyodbc
SQL Server
)并检查了我的系统驱动程序,但它仍然无法与其他驱动程序一起工作

不幸的是,该错误无法描述,我无法弄清楚为什么连接失败,但通过 SSMS 工作得很好。

python sql google-cloud-platform sqlalchemy pyodbc
1个回答
0
投票

参考以下

sqlalchemy
文档 https://docs.sqlalchemy.org/en/20/dialects/mssql.html#hostname-connections

使用主机名连接时,还必须在 URL 的查询参数中指定驱动程序名称。由于这些名称中通常含有空格,因此名称必须进行 URL 编码,这意味着使用加号来表示空格

这意味着您应该更改连接字符串以包含驱动程序名称,如下所示:

engine = create_engine("mssql+pyodbc://username:password@server/db?driver=ODBC+Driver+17+for+SQL+Server")

您需要添加计算机上安装的相应驱动程序的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.