如何使用 extra() 可移植跨数据库后端进行 Django 查询?

发布于 2024-11-05 10:00:50 字数 465 浏览 0 评论 0原文

我有一个小项目,涉及按出版年份浏览文章档案。

我使用了这个 其他问题,用于建立文章出版年份和这些年份的文章计数列表。它在我的带有 SQLite 的测试服务器上运行得很好。由于生产服务器将依赖于 PostgreSQL,因此我正在寻找一种方法来在 PostgreSQL 中实现相同的功能,并最终使用了 EXTRACT 关键字。我使用“导入设置”之类的东西来检测当前数据库后端并执行正确的查询。

我的观点是,所有这些看起来越来越像肮脏的东西。以一种非常不优雅、不可测试且难以维护的方式解决问题的蹩脚黑客。作为一名网络程序员初学者,我问我经验丰富的前辈,

你会如何正确处理这个问题?

I have a little project that involved article archive browsing by year of publication.

I used the trick given in this other question to build a list of article publication years and article counts for those years. It works pretty well on my test server with SQLite. Since the production server will rely on PostgreSQL I am looking for a way to achieve the same thing in PostgreSQL and ended up toying with the EXTRACT keyword. I use something like "import settings" to detect the current database backend and execute the right query.

My point is all of that look more and more like a dirty & crappy hack to solve an issue in a very inelegant, untestable and poorly maintainable way. As a web programmer beginner I ask my experienced elder,

How would you deal with that correctly ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

﹏雨一样淡蓝的深情 2024-11-12 10:00:50

作为原始 sql 的选项:

您可以使用 ORM 计算每年的计数(例如 如何使用 Django ORM 获取所有文章的年份列表以及文章计数

然后将该值存储在某个地方(在模型中或在缓存中......),以免被 ORM 计算的缓慢速度所淹没。

As an option to the raw sql:

You can calculate the count per year with the ORM (e.g. How to use Django ORM to get a list by year of all articles with an article count )

Then you store that value somewhere (in a model or in cache ...) in order not to be overwhelmed by the slowness of the ORM calculation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文