我正在将 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/