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


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

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

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

     

    1. def column_dict(self):  
    2.     model_dict = dict(self.__dict__)  
    3.     del model_dict['_sa_instance_state']  
    4.     return model_dict  
    5. 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())因为我懒~而且很多情况下其实没必要取出全部关联的数据。。。

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

  • 相关阅读:
    tensorflow入门笔记(五) name_scope和variable_scope
    tensorflow入门笔记(四) tf.summary 模块
    tensorflow入门笔记(三) tf.GraphKeys
    tensorflow入门笔记(二) 滑动平均模型
    tensorflow入门笔记(一) tf.app.flags.FLAGS
    iOS友盟推送注意点
    关于gif图片重用消失问题。
    百度地图使用经验
    SQLite语句
    app登录,client和serve的常用字段。
  • 原文地址:https://www.cnblogs.com/fengff/p/9213797.html
Copyright © 2020-2023  润新知