一尘不染

SQLAlchemy JSON作为Blob /文本

mysql

我使用MySQL将JSON作为blob /文本存储在列中。有没有简单的方法可以使用python / SQLAlchemy将其转换为字典?


阅读 664

收藏
2020-05-17

共1个答案

一尘不染

您可以使用SQLAlchemy
轻松创建自己的类型


对于SQLAlchemy版本> =
0.7,请在下面查看Yogesh的答案


import jsonpickle
import sqlalchemy.types as types

class JsonType(types.MutableType, types.TypeDecorator):    
    impl = types.Unicode

    def process_bind_param(self, value, engine):
        return unicode(jsonpickle.encode(value))

    def process_result_value(self, value, engine):
        if value:
            return jsonpickle.decode(value)
        else:
            # default can also be a list
            return {}

在定义表时可以使用它(示例使用elixir):

from elixir import *
class MyTable(Entity):
    using_options(tablename='my_table')
    foo = Field(String, primary_key=True)
    content = Field(JsonType())
    active = Field(Boolean, default=True)

您还可以使用其他json序列化程序进行jsonpickle。

2020-05-17