sqlalchemy from_statement 动态属性用于python对象

5 投票
1 回答
3040 浏览
提问于 2025-04-17 03:51

我有这样一个模型:

class Test(db.Model, UnicodeMixin):
    __tablename__ = 'test'

    id = db.Column(db.Integer, primary_key=True)

    subject = db.Column(db.String(512), nullable=False)

    additional = None

    def __unicode__(self):
        return u'<Test {0}>'.format(self.id)

有一些代码会生成很复杂的原始SQL语句,用于从数据库中进行SELECT查询,并且会包含一些动态数据。

比如,它生成的代码像这样:

db.session.query(Test).from_statement("SELECT test.id AS test_id, test.subject AS test_subject, 99 AS additional FROM test").all()

这段代码生成了一系列的Python对象Test,但是我该如何为这些Python对象填充additional这个属性呢?

我不想在数据库中存储additional这个列为NULL

我想通过SQL创建动态的附加数据,并将其添加到Python对象中。

请帮帮我。

谢谢。

1 个回答

1

这样做:

db.session.query(Test, "additional").from_statement(
    """
    SELECT test.id AS test_id, test.subject AS test_subject, 99 AS additional
    FROM test
    """
).all()

它会返回一个包含元组的列表,格式是(测试对象,附加信息)。

撰写回答