小编baz*_*ars的帖子

sqlalchemy,选择使用反向包含(不在)子列值列表

我在flask-sqlalchemy中有一个典型的帖子/标签(许多标签与一个帖子相关),我想选择没有用我提供的列表中的任何标签标记的帖子.首先,我建立的模型:

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tags = db.relationship('Tag', lazy='dynamic')

class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text(50))
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
Run Code Online (Sandbox Code Playgroud)

就像是

db.session.query(Post).filter(Post.tags.name.notin_(['dont','want','these']))

失败了

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Post.tags has an attribute 'name'

我假设是因为标签是关系而不是列.当我手动编写实际的SQL时,我在另一个项目上工作.这是有效的SQL:

SELECT * FROM $posts WHERE id NOT IN (SELECT post_id FROM $tags WHERE name IN ('dont','want','these'))

我如何使用sqlalchemy API实现这一目标?

python sqlalchemy flask-sqlalchemy

20
推荐指数
3
解决办法
2万
查看次数

标签 统计

flask-sqlalchemy ×1

python ×1

sqlalchemy ×1