将MySQL Query转换为Django查询

时间:2016-08-17 15:58:06

标签: python mysql django

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

我无法转换我的计数查询以便在Django中使用。似乎很简单,但我错过了一些东西。

旧功能W / QUERY

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

NEW QUERY

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()

我做了什么

  • 不尝试查询:
  • 除外

没有尝试,除了我得到追溯

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

但是int函数不能接受查询集。

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

即。这个有效,但更简单。

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

1 个答案:

答案 0 :(得分:1)

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

实际上,你是在append的结果上调用它,它始终为无。