SQLAlchemy JSON as blob/text

后端 未结 8 1949
猫巷女王i
猫巷女王i 2020-12-02 13:42

I\'m storing JSON down as blob/text in a column using MySQL. Is there a simple way to convert this into a dict using python/SQLAlchemy?

8条回答
  •  广开言路
    2020-12-02 14:18

    Based on @snapshoe answer and to answer @Timmy's comment:

    You can do it by using properties. Here is an example of a table:

    class Providers(Base):
        __tablename__ = "providers"
        id = Column(
            Integer,
            Sequence('providers_id', optional=True),
            primary_key=True
        )
        name = Column(Unicode(40), index=True)
        _config = Column("config", Unicode(2048))
    
        @property
        def config(self):
            if not self._config:
                return {}
            return json.loads(self._config)
    
        @config.setter
        def config(self, value):
            self._config = json.dumps(value)
    
        def set_config(self, field, value):
            config = self.config
            config[field] = value
            self.config = config
    
        def get_config(self):
            if not self._config:
                return {}
            return json.loads(self._config)
    
        def unset_config(self, field):
            config = self.get_config()
            if field in config:
                del config[field]
                self.config = config
    

    Now you can use it on a Providers() object:

    >>> p = Providers()
    >>> p.set_config("foo", "bar")
    >>> p.get_config()
    {"foo": "bar"}
    >>> a.config
    {u'foo': u'bar'}
    

    I know this is an old Question maybe even dead, but I hope this could help someone.

提交回复
热议问题