对于sqlalchemy——text类型字段存取json一体化的代码

class AdapterParameterDefineModel(BaseModel):

    __tablename__ = 'AdapterParameterDefine'

    adapter = Column(VARCHAR(128), primary_key=True)
    update_token = Column(VARCHAR(64), nullable=False)
    vendor = Column(VARCHAR(64), nullable=False)
    define = Column(TextJson, nullable=False)
    create_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'))
    update_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'))


import sqlalchemy.types as types
class TextJson(types.TypeDecorator):
    """
    自带json dump load的数据类型
    """
    impl = types.TEXT

    def process_bind_param(self, value, dialect):
        return json.dumps(value)

    def process_result_value(self, value, dialect):
        if value is not None:
            return json.loads(value)
        else:
            return value

#可以直接obj.define['xxx'],相当于可以直接把对象define拿到的值做字典处理。对于长文本非常有用。

  

原文地址:https://www.cnblogs.com/575dsj/p/8295422.html