我有以下代码:
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 工作得很好。
参考以下
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")
您需要添加计算机上安装的相应驱动程序的字符串。