使用Flask-SQLAlchemy搜索带有标签的帖子

德米特里S.

我正在使用Flask-SQLAlchemy开发API。我有一个数据库,其中包含帖子,标签以及它们之间的多对多映射。我想查找在搜索中至少具有一个匹配标签的帖子。例如,搜索标签“ A”,“ B”和“ C”应返回以“ A”或“ B”或“ C”作为标签的帖子。

我大致遵循Charles Leifer在使用多对多关系时查询多个标签的示例但是,我当前的查询根本不返回任何行:

@app.route('/api/posts/search', methods=['GET'])
def search_posts():
    tags = json.loads(request.data['tags'])
    posts = db.session.query(Post).join(TagMap).join(Tag).filter(Tag.tag in tags).group_by(Post.id).all()
    return jsonify(posts)

我已经确认标签正确地以字符串列表的形式进入数据库,并且我有帖子,标签以及它们之间的映射正确存储在数据库中。

如有必要,我的模型如下:

@dataclass
class Post(db.Model):
    __tablename__ = 'post'
    id:int
    text:str
    created:str
    op:bool

    id = db.Column(
        db.Integer,
        primary_key=True
    )
    text = db.Column(
        db.String(2000),
        index=False,
        nullable=False
    )

@dataclass
class Tag(db.Model):
    __tablename__ = 'tag'
    id:int
    tag:str

    id = db.Column(
        db.Integer,
        primary_key=True
    )
    tag = db.Column(
        db.String(32),
        index=False,
        nullable=False,
        unique=True
    )

@dataclass
class TagMap(db.Model):
    __tablename__ = 'tagmap'
    post_id:int
    tag_id:int

    id = db.Column(
        db.Integer,
        primary_key=True
    )
    post_id = db.Column(
        db.ForeignKey('post.id'),
        index=False,
        nullable=False
    )
    tag_id = db.Column(
        db.ForeignKey('tag.id'),
        index=False,
        nullable=False
    )
发掘

在我看来,这是您的in支票问题您目前有:

Tag.tag in tags

首先将在Python中将其评估为布尔值。这将始终是False因为Tag.tag不是字符串,因此永远都不能在“标记中”。这将WHERE 0 = 1在您的SQL查询中有效地生成一个(可能因数据库而异)。

您需要通过将“ SQL-in”重写为:

Tag.tag.in_(tags)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Flask SQLalchemy-多对多-显示带有所有标签的照片(或包含所有帖子的博客等)

来自分类Dev

Flask:使用带有关系的SQLalchemy模型填充WTform

来自分类Dev

Flask-SQLAlchemy查询带有多个必需标签的多对多标签

来自分类Dev

使用带有确切标签的 Javascript 搜索 JSON

来自分类Dev

带有sqlalchemy的Flask应用程序尝试使用Flask-APScheduler计划作业

来自分类Dev

如何允许用户使用带有Searchkick on Rails的Elastic Search仅搜索其帖子?

来自分类Dev

如何让用户使用带有Searchkick on Rails的Elastic Search仅搜索其帖子?

来自分类Dev

导入带有特定主题标签的Drupal 7 Twitter帖子(使用Twitter API 1.1)

来自分类Dev

导入带有特定主题标签的Drupal 7 Twitter帖子(使用Twitter API 1.1)

来自分类Dev

如何使用带有PHP的API在Tumblr中的帖子中添加多个标签?

来自分类Dev

有关使用Flask + MySQL + Flask-SQLAlchemy的问题

来自分类Dev

在带有Pyenv的virtualenv中使用Flask

来自分类Dev

在带有Pyenv的virtualenv中使用Flask

来自分类Dev

如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

来自分类Dev

使用Flask显示带有分页的记录时,搜索框中的变量值丢失

来自分类Dev

AttributeError:使用Flask SqlAlchemy,“ tuple”对象没有属性“ drivername”

来自分类Dev

在Flask上使用SQLAlchemy替换所有行的字符

来自分类Dev

如何使用flask sqlalchemy使过滤查询更有效?

来自分类Dev

使用Flask SQLAlchemy从MySQL表访问所有列

来自分类Dev

在带有SQLAlchemy Core和flask的项目中,我应该放在哪里以及如何使用Table()调用?

来自分类Dev

将Mixer与Flask-SQLAlchemy结合使用

来自分类Dev

使用Flask-SQLAlchemy选择多对多

来自分类Dev

使用Flask-SQLAlchemy批量插入

来自分类Dev

在Flask SqlAlchemy查询中使用to_char

来自分类Dev

Flask SQLAlchemy使用动态列名添加行

来自分类Dev

使用Flask-SQLAlchemy创建基本表

来自分类Dev

使用 Flask SQLAlchemy 更新特定行

来自分类Dev

无法使用 Flask 和 SQLAlchemy 插入行

来自分类Dev

带有Flask和SqlAlchemy的基于Django的基于日期的存档

Related 相关文章

  1. 1

    Flask SQLalchemy-多对多-显示带有所有标签的照片(或包含所有帖子的博客等)

  2. 2

    Flask:使用带有关系的SQLalchemy模型填充WTform

  3. 3

    Flask-SQLAlchemy查询带有多个必需标签的多对多标签

  4. 4

    使用带有确切标签的 Javascript 搜索 JSON

  5. 5

    带有sqlalchemy的Flask应用程序尝试使用Flask-APScheduler计划作业

  6. 6

    如何允许用户使用带有Searchkick on Rails的Elastic Search仅搜索其帖子?

  7. 7

    如何让用户使用带有Searchkick on Rails的Elastic Search仅搜索其帖子?

  8. 8

    导入带有特定主题标签的Drupal 7 Twitter帖子(使用Twitter API 1.1)

  9. 9

    导入带有特定主题标签的Drupal 7 Twitter帖子(使用Twitter API 1.1)

  10. 10

    如何使用带有PHP的API在Tumblr中的帖子中添加多个标签?

  11. 11

    有关使用Flask + MySQL + Flask-SQLAlchemy的问题

  12. 12

    在带有Pyenv的virtualenv中使用Flask

  13. 13

    在带有Pyenv的virtualenv中使用Flask

  14. 14

    如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

  15. 15

    使用Flask显示带有分页的记录时,搜索框中的变量值丢失

  16. 16

    AttributeError:使用Flask SqlAlchemy,“ tuple”对象没有属性“ drivername”

  17. 17

    在Flask上使用SQLAlchemy替换所有行的字符

  18. 18

    如何使用flask sqlalchemy使过滤查询更有效?

  19. 19

    使用Flask SQLAlchemy从MySQL表访问所有列

  20. 20

    在带有SQLAlchemy Core和flask的项目中,我应该放在哪里以及如何使用Table()调用?

  21. 21

    将Mixer与Flask-SQLAlchemy结合使用

  22. 22

    使用Flask-SQLAlchemy选择多对多

  23. 23

    使用Flask-SQLAlchemy批量插入

  24. 24

    在Flask SqlAlchemy查询中使用to_char

  25. 25

    Flask SQLAlchemy使用动态列名添加行

  26. 26

    使用Flask-SQLAlchemy创建基本表

  27. 27

    使用 Flask SQLAlchemy 更新特定行

  28. 28

    无法使用 Flask 和 SQLAlchemy 插入行

  29. 29

    带有Flask和SqlAlchemy的基于Django的基于日期的存档

热门标签

归档