SQLAlchemy 返回一个 ResultProxy 对象,处理这个最简单/最简单的方法是动态序列化它。由于显而易见的原因,许多 python 数据类型不会原生序列化为 JSON。
要让这个输出干净,试试这个:
def serialize_message(msg):
return {
"field_str": msg.field_str,
"field_int": int(msg.field_int),
"field_dt": msg.field_dt.strftime("%Y%m%d"),
}
records = [serialize_message(z) for z in Messages.query]
通过这种方式,您可以根据需要修改类型,例如 python 日期时间,或其他不原生序列化为 JSON 的特殊类型。
更高级的方法是将序列化方法直接附加到模型定义中,例如:
class Demo(db.Model):
__tablename__ = "demo"
field_str = db.Column(db.String(255), nullable=False)
field_int = db.Column(db.Integer, nullable=False)
field_dt = db.Column(db.DateTime, nullable=False)
def to_json(self):
return {
"field_str": self.field_str,
"field_int": int(self.field_int),
"field_dt": self.field_dt.strftime("%Y%m%d"),
}
那你就可以直接用这个了:
records = [z.to_json() for z in Messages.query]