如何在 sqlalchemy 查询中将日期时间更改为字符串使用 func.to_char 引发错误?

问题描述 投票:0回答:0
[
            {
                "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)
python sqlalchemy
© www.soinside.com 2019 - 2024. All rights reserved.