我正在尝试查询模型。
例如名为“Demo”的模型名称,我想获取该表的所有记录。
class Demo(db.Model):
__tablename__ = "demo"
field_1 = db.Column(db.String(255), nullable=False)
field_2 = db.Column(db.String(255), nullable=False)
现在我正在查询
records = Messages.query.all()
我试图将记录作为回复发送,所以我面临这个错误。我是新来的烧瓶,请帮我解决。
答案 0 :(得分:2)
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 datetime或其他未本机序列化为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]