使用pyodbc处理mssql特定限制的mssql sa方言
sqlalchemy-pyodbc-mssql的Python项目详细描述
sqlalchemy_pyodbc_mssql自述文件
概述
pyodbc是微软推荐的用于将python应用程序连接到mssql的dbapi层。然而, 该层不是特定于mssql的,因此有一些限制:
- 使用GROUP BY的参数化查询并不总是有效([源](https://github.com/mkleehammer/pyodbc/issues/479))
- 存储过程(如pyodbc中由准备好的语句调用的存储过程)仅限于 2100个参数([源](https://docs.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server?view=sql-server-2017))
sqlalchemy有一个用于mssql的pyodbc方言,但它也有这些限制。
- 有关分组的详细信息,请参见https://github.com/sqlalchemy/sqlalchemy/issues/4540
[PysSQL ](http://www.pymssql.org)作为一种替代的dAPI层和SQL语言存在。因为它准备查询 通过将参数滚动到查询字符串本身(当然是正确引用的)而不是发出 odbc编写的语句,它不存在上述问题。
sqlalchemy_pyodbc_mssql扩展了内置的sqlalchemy pyodbc方言,以便解决 这些限制与pymssql的实现方式一致。大多数查询按原样传递给 pyodbc准备正常并执行。由于上述问题,那些不起作用的, 给予特殊处理以避免限制,并使应用程序开发人员不需要 跟踪何时应用解决方案。
使用量
- 安装
- 在应用程序中使用:pip安装sqlalchemy\u pyodbc\u mssql
- 要运行测试:pip安装sqlalchemy_pyodbc_mssql[tests]
- 用法
- 请参阅[sqlalchemy instructions for pyodbc usage](https://docs.sqlalchemy.org/en/13/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc)
- 要使用的方言名称是mssql+pyodbc\u mssql
- 示例:
- mssql+pyodbc\u mssql://<;用户名>;:<;密码>;@<;dsnname>;
- mssql+pyodbc\u mssql://<;用户名>;:<;密码>;@<;数据库名>;?driver=sql+server+native+client+11.0