flask-sqlalchemy 设置json字段
前提:
我们知道在mysql 5.7版本之后支持json字段,且在项目中存在业务需求不确定情况,如需求、配置变动频繁,导致表结构无法确定,所以采用json字段来存储不确定配置数据(当然这种情况下完全可以考虑一些非关系型数据库,如MongDB等)。
下面我们需要设计出一个演示的表结构,如下:
下面我们开始在flask项目中写ORM关系映射对象:
from app.extend import db # 插件中导出db class TestJson(db.Model): __tablename__ = 't_json' id = db.Column(db.INT, primary_key=True) content = db.Column(db.String(255)) jsons = db.Column(db.JSON) @property def serialize(self): return { '_id': self.id, 'name': self.content, 'jsons': self.jsons }
其次我们在controller中实现简单的业务处理视图:
from flask import jsonify from app.init_server import open_route_api from app.module.jsonDemo.entity.jsonModel import TestJson from app.extend import db @open_route_api.route("/test/info", methods=['GET']) # 插入数据 def test_infos(): print("jsonDemo") obj = TestJson() dic = { "a": 1, "b": 'b' } obj.content = "text1" obj.jsons = dic db.session.add(obj) db.session.commit() return jsonify(dic) @open_route_api.route("/test/get", methods=['GET']) # 查询数据 def get_infos(): print("getDemo") obj = TestJson.query.filter_by(id=1).first() print(obj) return jsonify({'ok': obj.serialize})