當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
极简单的方式序列化sqlalchemy结果集为JSON
生活随笔
收集整理的這篇文章主要介紹了
极简单的方式序列化sqlalchemy结果集为JSON
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
繼承?json.JSONEncoder
實現一個針對sqlalchemy返回類型的處理方式。
sqlalchemy的返回類型有大都有兩種,一種是Model對象,一種是Query集合(只查詢部分字段)。
針對這兩種返回結果,都是來自同一中類型 ?sqlalchemy.orm.query.Query?
所以針對Query做相應處理,讓他返回一個dict
?
class AlchemyJsonEncoder(json.JSONEncoder):def default(self, obj):# 判斷是否是Queryif isinstance(obj, Query):# 定義一個字典數組fields = []# 定義一個字典對象record = {}# 檢索結果集的行記錄for rec in obj.all():# 檢索記錄中的成員for field in [x for x in dir(rec) if# 過濾屬性not x.startswith('_')# 過濾掉方法屬性and hasattr(rec.__getattribute__(x), '__call__') == False# 過濾掉不需要的屬性and x != 'metadata']:data = rec.__getattribute__(field)try:record[field] = dataexcept TypeError:record[field] = Nonefields.append(record)# 返回字典數組return fields# 其他類型的數據按照默認的方式序列化成JSONreturn json.JSONEncoder.default(self, obj)
這樣在每次序列化的時候就可以簡單的使用
json.dumps(result1, cls=AlchemyJsonEncoder)來實現對結果集的json序列化了。
轉載于:https://www.cnblogs.com/StupidsCat/p/7125233.html
總結
以上是生活随笔為你收集整理的极简单的方式序列化sqlalchemy结果集为JSON的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公章用了多年了未备案行吗?
- 下一篇: 用原生JS读写CSS样式的方法总结