【发布时间】:2021-10-13 11:16:25
【问题描述】:
在我的数据库 (MariaDB) 中,我有一列数据类型为 VARCHAR。数据实际上代表日期文本。因此,在访问它时,我使用了 @property 装饰器将文本转换为 Python datetime.date 对象:
@property
def data(self):
locale.setlocale(locale.LC_ALL, 'pt_BR.utf8')
try:
return datetime.strptime(self.doc_coletor, '%d/%B/%Y')
except ValueError:
return None
结果如下:
Original (string) |
Parsed (datetime object) |
|---|---|
| 09/agosto/2021 | 2021-08-09 00:00:00 |
| 08/agosto/2021 | 2021-08-08 00:00:00 |
| 07/agosto/2021 | 2021-08-07 00:00:00 |
但是,当尝试通过 SQLAlchemy 执行过滤器时,查询不返回任何结果,即使它们在实践中存在:
self.cpj.query(Coletor).filter(
Coletor.data == datetime.datetime(2021-08-06 00:00:00)
).all()
预期输出:
[<Coletor object at 0x00000199E7255190>, <Coletor object at 0x00000199E7255191>, <Coletor object at 0x00000199E7255192>, ...]
实际输出:
[]
我做错了什么?
【问题讨论】:
-
你可能想创建一个hybrid attribute。
-
就是这样,@snakecharmerb!谢谢!
标签: python sql date datetime sqlalchemy