[
{
"period": "2023-03-01",
"update_time": "2023-03-12T11:33:47",
"create_time": "2023-03-12T11:33:47"
},
]
我用mysql 我使用 sqlalchemy 来查询数据。为了去除返回数据中的时间戳,我提前遍历数据,使用datetime.strftime("%Y-%m-%d %H:%M:%S")格式化数据,但是我觉得喜欢写太多代码。有什么更好的解决方案?
class MyModel(Base):
period = Column(Date, nullable=False, )
create_time = Column(DateTime, default=datetime.now, )
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, )
query = db.query(
MyModel
).all()
li=[]
for obj in query:
result=obj.__dict__
result['create_time']=obj.create_time.strftime("%Y-%m-%d %H:%M:%S")
result['update_time']=obj.update_time.strftime("%Y-%m-%d %H:%M:%S")
li.append(result)
使用 func.to_char 引发错误
sqlalchemy.exc.OperationalError:(pymysql.err.OperationalError)(3047,“无效参数错误:日期格式在 m-%d %H 处无法识别:在函数 to_char 中。”) [SQL: 选择计数 (*) AS count_1 FROM (SELECT to_char(salary_record.create_time, %(to_char_2)s) AS to_char_1, to_char(salary_record.update_time, %(to_char_4)s) AS to_char_3 FROM 工资记录 WHERE salary_record.period = %(period_1)s) AS anon_1] [参数:{'to_char_2': '%Y-%m-%d %H:%M', 'to_char_4': '%Y-%m-%d %H:%M', 'period_1': '2023 -03-01'}]
query = db.query(
func.to_char(SalaryModel.create_time, '%Y-%m-%d %H:%M'),
func.to_char(SalaryModel.update_time, '%Y-%m-%d %H:%M'),
).filter(SalaryModel.period == period)