sqlalchemy-可以基于另一个表列的总和设置一个带有列(.func.sum)的表吗?

时间:2018-07-17 12:49:31

标签: mysql function sqlalchemy

这可能以前已经间接回答过。我试图根据外键在另一个表中的列总和中创建一个表的总大小字段。

下面给出:

import sqlalchemy as sa

self.archives = sa.Table('archives',... sa.Column('archive_id',sa.String(length=25),primary_key=True), sa.Column('total_size',sa.Iteger(),.....??????????....

self.file_level = sa.Table('file_level',...
          sa.Column('archive_id',sa.String(length=25),sa.ForeignKey('archives.archive_id'),
          sa.Column('file_size',sa.Integer(),...

archives.total_size应该类似于

self.archives.total_size = sa.func.sum(self.file_level.file_size).where(self.archives.archive_id==self.file_level.archive_id)

我该如何设置?可以成为DAO的一部分

sa.Column('total_size',sa.Iteger(),sa.func.sum(self.file_level.file_size).where(self.archives.archive_id==self.file_level.archive_id)

还是我必须形成查询功能?



更新:

好吧..我还没有得到答复,所以我试图查看我是否可以创建一个函数来更新存档表中的每个记录。

也许有人可以帮助我弄清楚我在这项工作中做错了什么。

a = sa.select([self.archives]).order_by(self.archives.c.archive_id.desc())
rp = self.connection.execute(a)
for a in rp:
    u = sa.update(self.archives).where(self.archives.c.archive_id == a.archive_id)
    u = u.values(sa.func.sum(self.file_level.c.file_size)).where(self.file_level.c.archive_id == a.archive_id)

我现在得到一个AttributeError: Neither 'sum' object nor 'Comparator' object has an attribute 'item'

关于如何解决此问题的任何想法?

0 个答案:

没有答案