【发布时间】:2021-10-17 03:26:34
【问题描述】:
我正在尝试检查标签是否已存储在表中。查询找到第一个标签,但没有找到第二个标签,并且两者都已在表中退出。
tags = form.tags.data
tags = tags.split(sep=",")
tag: str
for tag in tags:
# Register the tag if it is not already stored
tag_aux = Tags.get_by_tag(tag, language)
if tag_aux is None:
tag_id = Tags(None, tag.strip(), language).save()
TagsPosts(post.id, tag_id).save()
else:
TagsPosts(post.id, tag_aux.id).save()
# commit
TagsPosts.commit()
循环遍历从表单中检索到的标签列表并检查它是否已经存在。 tag_aux 如果它已经存在于数据库中,则获取该值。
# Table Mapping
__tablename__ = 'tags'
id = db.Column(db.Integer, primary_key=True)
description = db.Column(db.String, nullable=False)
language_id = db.Column(db.String, nullable=False)
def __init__(self, arg_id, description, language_id):
self.id = arg_id
self.description = description
self.language_id = language_id
# Gets a tag by description and language
@staticmethod
def get_by_tag(description, language_id):
"""Used to check if a tag already exists"""
return Tags.query.filter_by(description=description,language_id=language_id).first()
令人惊讶的是,找到了第一个标签,但没有找到第二个标签,因此 tag_aux 在第二个循环中得到了 None。
- 查询
kwargs = {dict: 2} {'description': 'Te', 'language_id': 'ES'}
self = {BaseQuery} SELECT tags.id AS tags_id, tags.description AS tags_description, tags.language_id AS tags_language_id \nFROM tags
- 查询
kwargs = {dict: 2} {'description': ' Inglaterra', 'language_id': 'ES'}
self = {BaseQuery} SELECT tags.id AS tags_id, tags.description AS tags_description, tags.language_id AS tags_language_id \nFROM tags
提前致谢。
【问题讨论】:
-
在第二个查询中有一个额外的空格,描述为
'description': ' Inglaterra'。应该是'description': ' Inglaterra'。
标签: python postgresql flask-sqlalchemy