python - 当列为varchar时,django从mysql中选择最大字段

标签 python django mysql max varchar

使用 Django 1.1,我尝试从 varchar 列(在 MySQL 中)中选择最大值。存储在列中的数据如下所示:

9001
9002
9017
9624
10104
11823

(实际上,数字比这个大得多。)

这一直有效,直到数字增加到 10000 以上:

Feedback.objects.filter(est__pk=est_id).aggregate(sid=Max('sid'))

现在,同一行将返回 9624 而不是 11823。

我可以直接在数据库中运行查询来满足我的需要,但我无法找出在 Django 中执行此操作的最佳方法。查询将是:

select max(sid+0) from Feedback;

任何帮助将不胜感激。

谢谢!

最佳答案

本着“任何帮助将不胜感激”的精神,您应该弄清楚为什么它在 Django 中停止工作(但显然不在 MySQL 中) - 在 10,000 处。

正在生成的查询是什么?请参阅this question了解如何找出答案。

我怀疑这是因为您添加了 +0 以使查询中的排序为数字。我不认为 Django 自然支持这一点,所以你有两个选择:

  • 人们无疑想知道为什么要在 VARCHAR 列中存储数字并要求其最大值。您可以将该列更改为 numeric data type .
  • 每当您想要进行一些自定义 SQL 调用而 Django 还不支持它时,您都可以做您必须做的事情: write your own raw SQL .
  • 编辑:您还可以修补 Django,但这可能是 MySQL 特定的事情,因此选项 #2 可能是您最好的选择。

关于python - 当列为varchar时,django从mysql中选择最大字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660489/

相关文章:

python - 您可以使用 getattr 调用范围内的函数吗?

mysql - 根据另一个表的条件更新表,包括函数

mysql - 如何在 MySQL 中的现有字符串末尾插入字符串类型的数据字段,有点像 CONCAT

python - 如何在正则表达式中隐藏匹配之后和关键字之前的文本?

python - RQ worker 抛出 "ValueError"

Django + mongoengine,作为辅助数据库时连接mongo

django - 如何在内联表单集上使用新的 form_kwargs?

python - @property 在 Django 中的 models.py 中有两个函数

php - MySQL 查询不在 PHP 中返回行值

Python Pandas 计算每个类别的返回百分比