目录
前言
sqlalchemy包含了mysql支持的所有的数据类型,我们平时的使用基本上都能够满足了。
但是,有一种情况比较特殊,就是mysql不能存储json数据,自然,sqlalchemy也没有对应json的数据类型。
这次在项目中,我需要在mysql中存储一个结构化的数据:JSON数据。那么,能实现吗?
实现原理
是可以实现的,因为sqlalchemy提供了一个类:TypeDecorator。这个类可以定义某个现存的数据类型的行为,文档原话:
Allows the creation of type which add addtional functionality to an existing type
TypeDecorator提供了两个方法作为存入mysql前 与 从mysql取出数据后 的两个操作,有点钩子函数的意思。分别为:
def process_bind_param(self, value, dialect):
pass
def process_result_value(self, value, dialect):
pass