【发布时间】:2020-07-01 05:25:54
【问题描述】:
我目前正在尝试构建一个查询 在烧瓶中给我一个一对多的 sqlalchemy 查询,我的结果过滤器都分组了,然后说有多少个单独的条目用于它
以下是我的数据库模型来说明问题:
class cellphone(db.Model):
__tablename__ = 'cellphone'
id = db.Column(db.Integer, primary_key = True)
number = db.Column(db.String(30), unique=True)
sms = db.relationship('sms_accounting', backref="cellphone", lazy='dynamic')
class sms_accounting(db.Model):
__tablename__ = 'sms_accounting'
id = db.Column(db.Integer, primary_key = True)
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
cellphone_id = db.Column(db.Integer, db.ForeignKey('cellphone.id'))
我现在要做的是找出每个号码在 X 天内发送了多少条短信。
我设法进行了过滤和分组,但无法正确计算每个设备的总和。
def sms_count():
search_peroid='90' #time to fetch events in days
period_start = datetime.utcnow() - timedelta(hours=int(search_peroid))
phone_count = sms_accounting.query.filter(sms_accounting.timestamp.between(period_start, \
datetime.utcnow() )).group_by(sms_accounting.cellphone_id).all()
我找到了一些 func.count 的示例,但不幸的是它们都不起作用。这已经从使用开始,
AttributeError: BaseQuery object has no attribute 'func'
即使它是专门进口的。
from sqlalchemy.sql.functions import func
【问题讨论】: