我正试图在python中使用sqlalchemy查询我的数据库,以选择除ID属于某个列表的行之外的所有行。像这样的东西;
exceptList = [1, 3, 5]
db.query.all() except those in exceptList
我该怎么做?
给定此初始设置:
class Question(db.Model):
id = db.Column(db.Integer, primary_key=True)
category = db.Column(db.String)
db.create_all()
# Assign category alternately: id 1 ->, id 2 -> B etc.
db.session.add_all([Question(category='AB'[n % 2]) for n in range(5)])
db.session.commit()
让我们试着为类别";A";,假设已经提出了问题1-3。
如果你已经有了列表,你可以进行
q = Question.query.filter(Question.id.not_in([1, 2, 3]), Question.category == 'A')
next_question = q.one()
print(next_question.id, next_question.category)
如果必须通过查询获得异常列表,则可以使用EXCEPT
子句:
# Create a filter than defines the rows to skip
skip = Question.query.filter(db.or_(Question.id < 4, Question.category == 'B'))
q = Question.query.except_(skip)
next_question = q.one()
print(next_question.id, next_question.category)
本文档部分介绍如何使用except_
(尽管它使用UNION
作为示例(。
您可以尝试以下内容。
except_list = ["password", "another_column"]
result = session.query(*[c for c in User.__table__.c if c.name not in except_list).all()