使用SqlAlchemy时如何方便的取得dict数据、dumps成Json

使用Sqlalchemy可以方便的从数据库读取出python对象形式的数据(吐槽:说实话对象形式也没多方便,还不如我之前从关系型数据库直接读取出dict形式的数据用起来方便,具体参见我以前的文章http://zhengxiaoyao0716.lofter.com/post/1d6e9c56_93d6d00))

然而对象形式的数据是不方便直接进行http传递的,一般转化成Json比较方便。而如果你直接对从数据库取得的对象dumps或jsonify,会得到一个错误。Google一下其实是有不少解决方法的,那些方法很不错,解决的也比较完美。但要我说就是麻烦了点。我的这个方法可能没那么完善,但大多数简单情况下足以解决问题了。

首先,为数据模型的基型添加一个方法(不知道是不是该这么叫,总之就是你新建一个数据模型的类时继承的那个类,我的叫做Base):

def column_dict(self):
    model_dict = dict(self.__dict__)
    del model_dict['_sa_instance_state']
    return model_dict
Base.column_dict = column_dict


这个方法干嘛的呢?首先,copy数据对象的字典,然后去掉key为'_sa_instance_state'这条记录,没错,大部分情况下就是它阻止了我们dumps、jsonify的步骤。注意是对新copy的dict操作,否则就影响到数据库本身的外键关联就悲剧了~

那么假设有一个继承自该Base的Model,比如class User(Base):...,我们取得一个它的对象后,比如user = User.query.get(1),只要对user.column_dict()做dumps就好了。如果User有外键关联什么的,请自行先for ext in user.exts:...,然后把每一个ext的column_dict()添加到user_dict(user_dict = user.column_dict())因为我懒~而且很多情况下其实没必要取出全部关联的数据。。。

好了就是这样,一个简单不完美却很有效的解决技巧~~~

转载于:https://www.cnblogs.com/zhengxiaoyao0716/p/5914918.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值