zoukankan      html  css  js  c++  java
  • 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})
    

      

  • 相关阅读:
    PhpStorm一次性折叠所有函数或者方法
    安装IntelliJ IDEA热部署tomcat插件JreBel
    mysql-master-ha
    mysql sys table
    Innodb 表修复(转)
    MySQL Binlog 【ROW】和【STATEMENT】选择(转)
    Innodb 存储引擎(转)
    MySQL 利用SQL线程对Binlog操作(转)
    针对跑MySQL的Linux优化【转】
    MySQL explain key_len 大小的计算
  • 原文地址:https://www.cnblogs.com/double-W/p/13438050.html
Copyright © 2011-2022 走看看