lazybios

Sqlalchemy查询结果直接转json

Sqlalchemy是一款很好用的Python ORM 工具, 配合flask可以快速构建出Restful api,不过美中不足就是Sqlalchemy的查询结果不能直接通过jsonify函数直接转换。一种变通的办法就是通过在 在创建数据类的时候,就实现一个to_json的方法,代码如下:


class Article(Base):
    __tablename__ = 'article'
    id = Column(Integer, primary_key=True)
    title = Column(String(250), nullable=False)
    link = Column(String(255), nullable=True)
    cover = Column(String(255), nullable=False)
    nickname = Column(String(255), nullable=False)
    content = Column(Text(), nullable=False)

    def to_json(self):
        return {
                'id': self.id,
                'title': self.title,
                'link': self.link,
                'cover': self.cover,
                'nickname': self.nickname,
                'content' : self.content
                }

to_json方法返回一个字典类型,在最终生成json数据的时候,可以提前调用查询结果的类方法to_json拼接出任意需求的数据格式,将拼接后的结果数据传入到jsonify中。


res =  db.session.query(Article).all()
temp = []
for x in res:
    temp.append(x.to_json())

jsonify(objects = temp)

微信关注「日拱一卒」公众号