【问题标题】:SQLAlchemy Alembic: Issue with URL for SQLServerSQLAlchemy Alembic:SQLServer 的 URL 问题
【发布时间】:2021-04-10 17:11:07
【问题描述】:

我尝试使用 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 的建议。

【问题讨论】:

    标签: python sqlalchemy alembic flask-migrate sqlalchemy-migrate


    【解决方案1】:

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

    这就是我的alembic.ini 现在有对应的行:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我试过这个并没有用。但是,我能够通过删除"(引号)来解决它
      • 是的,SQLAlchemy 连接 URI 应该 被编码,但空格实际上不是问题(如其他答案所示)。 AFAIK必须转义的唯一字符是:@/?(可能还有+本身,不确定那个)。
      猜你喜欢
      • 2010-11-01
      • 2010-10-22
      • 2022-11-17
      • 2010-11-03
      • 2017-09-26
      • 2010-10-09
      • 2011-01-13
      • 2010-12-03
      • 2011-09-23
      相关资源
      最近更新 更多