SQLAlchemy orm 样式,如何对连接字符串进行特殊驱动

SQLAlchemy orm styles, how to make special drive to your connection string

我使用 pypy、pypyodbc 和 SQLAlchemy。 我有 odbc 连接问题。

我使用:

engine = create_engine('mssql+pyodbc://dbuser:dbpasswd@localhost/dbname', echo = False)
Session = sessionmaker(bind=engine)

样式尝试连接数据库。

错误是:

C:\pypy\site-packages\sqlalchemy\connectors\pypyodbc.py:82: SAWarning: No driver
name specified; this is expected by PyODBC when using DSN-less connections
"No driver name specified; "

这个错误的原因,我找到connect参数

 DRIVER={SQL Server Native Client}

没有传输到引擎,换句话说,我想知道如何为 SQLALchemy 的这种连接方式设置 DRIVER 字符串。

我 运行 遇到了与 Sybase ASE 相同的问题,在查看 pyodbc.py 源代码后,您可以在 url 中传递类似 GET 的参数。举个例子(为我工作):

sybase+pyodbc://username:password@hostname:5000/dbname?driver=Adaptive Server Enterprise

它也有某种记录 here,连接字符串语法为 dialect://user:password@host/dbname[?key=value..]

希望对您有所帮助

您可能也一直在为更新 SqlAlchemy 版本而苦恼。从最新版本 (v1.0) 开始,您需要在 Microsoft SQL 服务器的连接字符串中明确定义您的驱动程序。

参见: 在 1.0.0 版中更改:基于主机名的 PyODBC 连接现在需要明确指定的 SQL 服务器驱动程序名称。 SQLAlchemy 无法在此处选择最佳默认值,因为它因平台和安装的驱动程序而异。

http://docs.sqlalchemy.org/en/latest/dialects/mssql.html#hostname-connections

参见:

我收到此错误消息并通过将其添加到连接字符串的末尾来修复它:

"?driver=SQL+Server+Native+Client+10.0"