ORM sqlalchemy 创建模式集列等于计算

Posted

技术标签:

【中文标题】ORM sqlalchemy 创建模式集列等于计算【英文标题】:ORM sqlalchemy create schema set column equal to calculation 【发布时间】:2019-08-21 17:58:19 【问题描述】:

在 sqlalchemy ORM 中,有没有办法将一列设置为等于其他两列的计算?这将类似于 mysql 生成的列。例如:

class FactStockQuantity(Base):
    __tablename__ = 'test'
    id = Column(BIGINT(unsigned=True), primary_key=True, autoincrement=True)
    value1 = Column(INTEGER(unsigned=True), index=True)
    value2 = Column(INTEGER(unsigned=True), index=True)
    value3 = Column(INTEGER(unsigned=True), index=True, value= value1 + value2)```


【问题讨论】:

看看context sensitive default functions 还有:***.com/q/11134539/6560549 【参考方案1】:

所以,我想这部分取决于您是否需要它在数据库中。

看起来Hybrid Attributes 允许您在 ORM 级别拥有“计算列”功能,但它实际上并没有在数据库中创建列。

否则,您可以使用 SQL 创建它,然后使用 FetchedValue 阻止 SQLAlchemy 尝试向其写入值,如 this SO answer 所示。

HTH

【讨论】:

以上是关于ORM sqlalchemy 创建模式集列等于计算的主要内容,如果未能解决你的问题,请参考以下文章

在 SqlAlchemy ORM 中填充相关表

Django ORM和SQLAlchemy类比

SQLAlchemy ORM:“AttributeError:无法在行中找到列”

Node.js 没有很好的 ORM 来管理 MySQL 模式/迁移......所以我可以使用 SQLAlchemy 来管理它吗?

python+ sqlalchemy实现orm创建表和查询操作

ORM框架之SQLAlchemy