【发布时间】:2020-02-17 17:35:29
【问题描述】:
我刚开始使用 Flask SQLAlchemy,我在这里查看了我应该如何进行查询,所以我找到了this
但我遇到的问题是它在执行时返回以下内容:
SELECT records.id AS records_id, records.created_at AS records_created_at, records.file_type AS records_file_type, records.path_filename AS records_path_filename
FROM records
WHERE records.created_at BETWEEN ? AND ?
代码:
today_date = datetime.today().strftime("%d/%m/%Y")
week = (datetime.today() - timedelta(days=7)).strftime("%d/%m/%Y")
month = (datetime.today() - timedelta(days=30)).strftime("%d/%m/%Y")
last_30_days = db.session.query(Records).filter(Records.created_at.between(month, today_date))
当我在 last_30_days 表达式的末尾添加 .all() 时,它会返回一个空列表。
我还要提一下,当我使用相同的表达式查询星期时,today_date 会得到所有结果。
这就是表格的样子:
class Records(db.Model):
id = db.Column(db.Integer, primary_key=True)
created_at = (db.Column(db.String(20), nullable=False))
file_type = (db.Column(db.String(100), nullable=False))
path_filename = db.Column(db.String(120), unique=True, nullable=False)
谁能给我解释一下这是怎么回事?谢谢!
【问题讨论】:
-
因为您正在进行字符串比较,而不是日期时间比较。如果您希望对字符串进行
<或>比较有意义,则需要ISO 格式的时间。例如,“YYYY-MM-DD”将允许字符串比较工作。另请注意,SQLA 中有DateTime和Date格式
标签: python flask sqlalchemy