python - 将 MySQL 查询转换为 Django 查询

标签 python mysql django

我正在将 FlaskApp 转换为 Django。在我的 Flask 应用程序中,我直接进行数据库查询,没有像 MySQLAlchemy 这样的 ORM。

我在转换计数查询以在 Django 中使用时遇到问题。看起来很简单,但我错过了一些东西。

带查询的旧函数

def countClients(db, begin, end, type):
    c = db.cursor()
    query = "SELECT COUNT(*) FROM newclients WHERE method LIKE %s AND (enddate BETWEEN %s AND %s)"
    c.execute(query, (type, begin, end))
    output = int(c.fetchone()[0])
    return output

新查询

for year in range(2015, today.year):
    for month in range(1, 13):
        startdate = datetime.date(year, month, 1)
        enddate = last_day_of_month(startdate)
        try:
            Count14.append(
                newclients.objects.filter(method = 'Test Drive',
                                          enddate__range=(startdate, enddate)
                                          )
            ).count()

我尝试过的

  • 不带 Try 的查询:Except

除了我得到回溯之外,没有尝试

'NoneType' object has no attribute 'count'
  • 在查询周围添加 int()

但是 int 函数无法接受查询集。

注意 我已成功使用了这些查询的部分内容,但我在这里尝试的这些查询比其他查询更复杂。

即这个可行,但更简单。

clients = newclients.objects.filter(method=method_query).filter(enddate__range=(begindate, enddate))

最佳答案

您的.count()位置错误。它需要位于第二个右括号之后,而不是第三个。

事实上,您正在对 append 的结果调用它,该结果始终为 None。

关于python - 将 MySQL 查询转换为 Django 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39001317/

相关文章:

python - 模型中的 SQLAlchemy 自定义本地属性

Python:与 *nix 中正在运行的进程的 STDIN/OUT 交互

django - 查询模板所需的变量?

python - 为 Django 网站创建 .gitignore 文件

python - 如何断言模拟是用特定类型而不是实例调用的?

java - 在 jpa 查询中使用 in 子句给出 Operand should contains 1 columns(s) 错误

mysql - 删除 django 使用的数据库中的表

mysql - 包含 is not 语句的 SQL Sum Case

django - 干草堆:仅突出显示一个字段

python - 如何与Python-Mysql交互