gpt4 book ai didi

python - 需要有关解决 Wagtail/SQL Azure 兼容性问题的建议

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:30 25 4
gpt4 key购买 nike

我的组织正在开发一个基于 Wagtail 作为 CMS 后端的新发布平台。我们在 MS SQL 数据库方面拥有广泛的内部专业知识,但在 Postgres 或 MySQL 方面几乎没有,因此更愿意使用 MS SQL(特别是 SQL Azure)——Wagtail 的文档似乎暗示这是可能的。

我有一个正在运行的 Wagtail 实例,并安装了声称支持 SQL Azure 的 Django 后端 ( https://pypi.python.org/pypi/django-pyodbc-azure)。我已经在 settings.py 中配置了我的数据库连接设置。

我可以成功运行迁移并创建 super 用户,因此我有理由相信数据库连接良好。

然后我可以浏览到位于 http://localhost:8000/admin 的 Wagtail 登录页面但是在使用提供给 createsuperuser 脚本的凭据登录后,我立即收到以下错误:

('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'LIMIT'. (102) (SQLExecDirectW)")

似乎 Wagtail 本身正在使用 MS SQL 中不支持的 LIMIT 关键字 - 我排除故障并尝试解决此行为的最佳方法是什么?或者我是在躲避什么?

违规 SQL :

SELECT wp.* FROM wagtailcore_pagerevision wp
JOIN ( SELECT max(created_at) AS max_created_at,
page_id FROM wagtailcore_pagerevision WHERE user_id = %s
GROUP BY page_id ORDER BY max_created_at DESC LIMIT %s ) AS max_rev ON max_rev.max_created_at = wp.created_at ORDER BY wp.created_at DESC

最佳答案

在大多数情况下,Wagtail 使用支持 MS SQL 的 Django 的 ORM。在某些情况下,我们会使用“原始”SQL,通常是出于性能原因。在这种情况下,正如您所指出的,原始 SQL 与 MS SQL 不兼容。您可以采用两种方法来解决此问题:

  1. 重构代码以使用 Django ORM(检查任何性能影响)

  2. 为 MS SQL 提供一个特例,例如

https://github.com/wagtail/wagtail/blob/da067679cdd7999c256c8916f78c82f7641d51cd/wagtail/wagtailcore/models.py#L602

关于python - 需要有关解决 Wagtail/SQL Azure 兼容性问题的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42396930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com