flask-sqlalchemy:查询一个表中的记录,而另一表中没有相关记录(或某个值的记录)

杰克·洛文(Jake Lowen)

我正在编写一个简单的应用程序,可以帮助人们致电选民。我不希望我的志愿者多次欺骗任何选民。我如何获得尚未被召集的选民名单?我正在将烧瓶与flask-sqlalchemy一起使用。

选民模型:

    class Voter(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(80))
        phone = db.Column(db.String(20))
        vanid = db.Column(db.String(20))
        address = db.Column(db.String(255))
        city = db.Column(db.String(255))
        zip_code = db.Column(db.String(20))
        lat  = db.Column(db.Float)
        lng = db.Column(db.Float)
        ...

通话模型:

    class Call(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        voter_id = db.Column(db.Integer, db.ForeignKey('voter.id'))
        voter = db.relationship('Voter', backref=db.backref('calls', lazy='dynamic'))
        user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
        user = db.relationship('User', backref=db.backref('calls', lazy='dynamic'))
        time = db.Column(db.DateTime)
        status_code = db.Column(db.String(20))
        ...

call.status_code将包含诸如complete,busy,wrong_number等值。

我想获得一个有资格被召集的所有选民的名单,这样我就可以选出一个服务于志愿者。(即call.status_code!=已完成等,或者没有相关的通话记录)

如果要在原始SQL中执行此操作,则可能会执行以下操作:

Select [whatever]
FROM Voter v
LEFT JOIN Call c on c.voter_id = v.id
WHERE c.status_code IS NULL OR c.status_code = 'busy'

我无法在sqlalchemy中弄清楚。有什么见解吗?

PawełPogorzelski

您可能会使用类似:

required_voters = db.session.query(Voter).outerjoin(Call).filter((Call.voter_id == None) | (Call.status_code != 'completed'))

编辑

建议查询:

vwcc = db.session.query(distinct(Call.voter_id)).filter(Call.status_code == 'completed').subquery()
this will select all unique voters with completed calls

现在主要

required_voters = db.session.query(Voter).outerjoin(Call).outerjoin(vwcc,vwcc.voter_id == Voter.id)).filter((vwcc.voter_id == None)&(((Call.voter_id == None) )|(Call.status_code!='完成')))

我相信这会选出所有具有以下资格的选民:-没有打过电话的状态--没有打过电话或他们的电话没有完成的状态请记住,我是从头脑中写出来的,因此语法可能有些偏离

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止用户删除一个表中具有相关记录的记录

来自分类Dev

OperationalError在Flask中没有这样的表与SQLAlchemy

来自分类Dev

如果另一个表中没有记录,则插入到一个表中

来自分类Dev

从一个表中查找在另一个表的关联记录中没有特定字段值的记录的记录

来自分类Dev

如何在Flask-SQLAlchemy中按ID删除记录

来自分类Dev

根据另一个表中的记录值将记录插入表中

来自分类Dev

Left Join / IS NULL如何消除一个表中存在而不是另一表中的记录?

来自分类Dev

使用Flask + SqlAlchemy仅创建一个表

来自分类Dev

从一个表中选择记录,而另一个表中没有两列

来自分类Dev

从一个表中选择与客户或另一表中的“ Customers”子项相关联的票证记录

来自分类Dev

将记录插入到表中,其中一个来自另一表

来自分类Dev

Flask-SQLAlchemy更新一对多记录

来自分类Dev

如何从一个表中选择另一个表中没有外键的记录

来自分类Dev

如何在同一表中设置一个记录值等于另一个记录值

来自分类Dev

如何从一个表中选择在另一表中由于某种条件而在另一表中不存在的所有记录?

来自分类Dev

从另一个表更新表中的记录

来自分类Dev

SQL:一个表中的所有记录,以及另一表中的所有记录,包括null

来自分类Dev

Mysql查询可基于字段数的数量将一个表中的记录转换为另一表中的记录数

来自分类Dev

如何将一个记录与同一表中的另一个记录相关联?

来自分类Dev

如果另一个表中没有记录,则插入到一个表中

来自分类Dev

SQLite查询选择另一个表中不存在的所有记录

来自分类Dev

如何将一个表中的数据移动到30天以上记录的另一表中?

来自分类Dev

根据另一个表中记录的值将记录插入表中

来自分类Dev

为什么flask sqlalchemy模型查询没有获得最新记录?

来自分类Dev

连接两个表,向我显示一个表中的记录,而另一个表中没有对应的值

来自分类Dev

从另一个表中获取没有记录的记录

来自分类Dev

按多列显示一个表中不在另一表中的记录

来自分类Dev

计算一个表中与另一表中条件匹配的记录

来自分类Dev

使用 Flask 后端中的另一个 sql 查询检查复选框上的重新生成表

Related 相关文章

  1. 1

    防止用户删除一个表中具有相关记录的记录

  2. 2

    OperationalError在Flask中没有这样的表与SQLAlchemy

  3. 3

    如果另一个表中没有记录,则插入到一个表中

  4. 4

    从一个表中查找在另一个表的关联记录中没有特定字段值的记录的记录

  5. 5

    如何在Flask-SQLAlchemy中按ID删除记录

  6. 6

    根据另一个表中的记录值将记录插入表中

  7. 7

    Left Join / IS NULL如何消除一个表中存在而不是另一表中的记录?

  8. 8

    使用Flask + SqlAlchemy仅创建一个表

  9. 9

    从一个表中选择记录,而另一个表中没有两列

  10. 10

    从一个表中选择与客户或另一表中的“ Customers”子项相关联的票证记录

  11. 11

    将记录插入到表中,其中一个来自另一表

  12. 12

    Flask-SQLAlchemy更新一对多记录

  13. 13

    如何从一个表中选择另一个表中没有外键的记录

  14. 14

    如何在同一表中设置一个记录值等于另一个记录值

  15. 15

    如何从一个表中选择在另一表中由于某种条件而在另一表中不存在的所有记录?

  16. 16

    从另一个表更新表中的记录

  17. 17

    SQL:一个表中的所有记录,以及另一表中的所有记录,包括null

  18. 18

    Mysql查询可基于字段数的数量将一个表中的记录转换为另一表中的记录数

  19. 19

    如何将一个记录与同一表中的另一个记录相关联?

  20. 20

    如果另一个表中没有记录,则插入到一个表中

  21. 21

    SQLite查询选择另一个表中不存在的所有记录

  22. 22

    如何将一个表中的数据移动到30天以上记录的另一表中?

  23. 23

    根据另一个表中记录的值将记录插入表中

  24. 24

    为什么flask sqlalchemy模型查询没有获得最新记录?

  25. 25

    连接两个表,向我显示一个表中的记录,而另一个表中没有对应的值

  26. 26

    从另一个表中获取没有记录的记录

  27. 27

    按多列显示一个表中不在另一表中的记录

  28. 28

    计算一个表中与另一表中条件匹配的记录

  29. 29

    使用 Flask 后端中的另一个 sql 查询检查复选框上的重新生成表

热门标签

归档