我在这里使用SQLAlchemy配方来神奇地JSON编码/解码我的模型中DB的列,如:
class Thing(Base):
__tablename__ = 'things'
id = Column(Integer(), primary_key=True)
data = Column(JSONEncodedDict)
Run Code Online (Sandbox Code Playgroud)
当我想在我的模型中创建一个额外的"raw_data"字段来访问相同的底层JSON数据时,我遇到了麻烦,但没有编码/解码它:
raw_data = Column("data", VARCHAR)
Run Code Online (Sandbox Code Playgroud)
SQLAlchemy似乎对名称冲突感到困惑,并将一列未映射.有什么方法可以说服SQLAlchemy将两个属性实际映射到同一列?
我只需raw_data通过 SQLAlchemy 定义列,然后使用 Python 的属性/设置器来透明地使用data. IE:
class Thing(Base):
__tablename__ = 'things'
id = Column(Integer(), primary_key=True)
raw_data = Column(String())
@property
def data(self):
# add some checking here too
return json.loads(self.raw_data)
@data.setter
def data(self, value):
# dito
self.raw_data = json.dumps(value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |