SQLAlchemy 不同类型的列同义词
我正在使用 SQLAlchemy 配方此处神奇地 JSON 编码/解码模型中数据库中的列,如下所示:
class Thing(Base):
__tablename__ = 'things'
id = Column(Integer(), primary_key=True)
data = Column(JSONEncodedDict)
当我想在模型中创建额外的“raw_data”字段以访问相同的底层 JSON 数据但不对其进行编码/解码时,我遇到了障碍:
raw_data = Column("data", VARCHAR)
SQLAlchemy似乎对名称冲突感到困惑,并留下一列未映射。有什么方法可以说服 SQLAlchemy 实际上将两个属性映射到同一列吗?
I'm using the SQLAlchemy recipe here to magically JSON encode/decode a column from the DB in my model like:
class Thing(Base):
__tablename__ = 'things'
id = Column(Integer(), primary_key=True)
data = Column(JSONEncodedDict)
I hit a snag when I wanted to create an extra "raw_data" field in my model to access the same underlying JSON data, but without encoding/decoding it:
raw_data = Column("data", VARCHAR)
SQLAlchemy seems to get confused by the name collision and leave one column un-mapped. Is there any way I can convince SQLAlchemy to actually map both attributes to the same column?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我只需通过 SQLAlchemy 定义
raw_data
列,然后使用 Python 的属性/设置器来透明地使用data
。 IE:I would just define the
raw_data
column through SQLAlchemy and then use Python's property/setter to make transparent use ofdata
. I.e.: