SQLAlchemy Alembic:SQLServer 的 URL 问题

问题描述

我尝试使用 Alembic 为我的 sqlServer 数据库创建数据库迁移脚本,但连接字符串出现问题。

这就是我现在所拥有的:

sqlalchemy.url = "mssql+pyodbc://db_server/database?trusted_connection=yes&driver=ODBC Driver 17 for sql Server"

alembic current间的错误消息: sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string '"mssql+pyodbc://dbserverxx/dbxx?trusted_connection=yes&driver=ODBC Driver 17 for sql Server"'

我使用 sqlite 测试了我的脚本并且运行良好。

我使用的是 Mac,odbcinst.ini内容如下:

[ODBC Driver 17 for sql Server]
Description=Microsoft ODBC Driver 17 for sql Server
Driver=/usr/local/lib/libmsodbcsql.17.dylib
UsageCount=2

我能够使用 PyODBC 连接到数据库并执行原始 sql

感谢您提供正确的 sqlalchemy.url 建议。

解决方法

我能够通过删除引号来解决问题。

这就是我的 alembic.ini 现在具有相应行的方式:

sqlalchemy.url = mssql+pyodbc://dbserver/database?trusted_connection=yes&driver=ODBC Driver 17 for SQL Server
,

网址不能有空格。用 + 字符替换空格:

sqlalchemy.url = "mssql+pyodbc://db_server/database?trusted_connection=yes&driver=ODBC+Driver+17+for+SQL+Server"

您可以了解有关 URL encoding 的更多信息,空格并不是网址中唯一需要转义的字符。