Вероятно, проблема дизайна - небольшое несоответствие между вашей БД и Python.В SQL переменные (столбцы) имеют тип, в то время как в значениях Python имеют тип.
Одной из возможностей может быть использование одного столбца (строки), но выбор значения перед сохранением.
Это может быть выполнено автоматически с помощью пользовательского типа sqlalchemy .
Что-то вроде следующего (для преобразования используется jsonpickle , а не cpickle):
import sqlalchemy.types as types
import jsonpickle
from copy import deepcopy
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:
rv = jsonpickle.decode(value)
return rv
else:
return None
def copy_value(self, value):
return deepcopy(value)
def compare_values(self, x, y):
return x == y
А затем используйте его следующим образом:
class MyClass(base):
value = Column(JsonType())