sqlalchemy中的types.TypeDecortor类

关键词:数据库文件存储的前处理与后处理

我们在把数据通过sqlalchenmy写入数据库的时候,有时候我们需要一些自己的格式,比如dict或者list,我们想在传入数据库之前把他们转化成数据库可以存储的json字符串格式,从数据库取出来的时候,我们又希望可以把json格式转化成其对应的python格式!sqlalchemy给我们提供了一个途径。

我们以json格式为例,假设我们要使用的数据类型是json格式

  • 存储到数据库之前是python格式,比如我们一般使用list或者dict等格式(存储前)
  • 存储到数据库中的是json字符串(数据库中格式,用impl的格式来存储
  • 然后从数据库中取出来之后的格式是原始的python格式(比如dict或者list
1
2
3
4
5
6
7
8
9
10
11
12
13
import sqlalchemy.types as types
class MyType(types.TypeDecorator):
#impl变量规定了存储到数据库中的存储形式
impl = types.TEXT
#复写process_bind_param方法,此方法用于传入数据库的前处理
def process_bind_param(self, value, dialect):
return json.dumps(value)
#复写process_result_value方法,对从数据库中取出的数据进行后处理
def process_result_value(self, value, dialect):
return json.loads(value)