这可能以前已经间接回答过。我试图根据外键在另一个表中的列总和中创建一个表的总大小字段。
下面给出:
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'
关于如何解决此问题的任何想法?