我试图在烧瓶应用程序上使用搜索功能。它似乎正确地保存在数据库中,但是查询没有返回任何内容。
数据库模型:
app = Flask(__name__)
csrf = CsrfProtect(app)
csrf.init_app(app)
db = SQLAlchemy(app)
class ArticleQuery(BaseQuery, SearchQueryMixin):
pass
class latest_movies_scraper(db.Model):
query_class = ArticleQuery
__tablename__ = 'latest_movies_scraper'
id = db.Column(sa.Integer, primary_key=True)
name = db.Column(db.Unicode(255))
url = db.Column(db.Unicode(255))
image_url = db.Column(db.Unicode(255))
create = db.Column(db.DateTime, default=datetime.datetime.utcnow)
search_vector = db.Column(TSVectorType('name'))如何保存到数据库:
check_if_exists = latest_movies_scraper.query.filter_by(name=dictionary['title']).first()
if check_if_exists:
print check_if_exists.name
print 'skipping this...'
pass
else:
insert_to_db = latest_movies_scraper(name=dictionary['title'], url=dictionary['href'], image_url=dictionary['featured_image'])
db.session.add(insert_to_db)
db.session.commit()我是如何使用搜索功能的:
name = latest_movies_scraper.query.search(u'Black Panther (2018)').limit(5).all()Name返回空数组,但它应该返回名称列表。
上面我的目标是从数据库中查询名称。当我的数据库中存在名字“黑豹2018年”时,它不会给我任何信息。因此,搜索功能不像预期的那样工作。
发布于 2018-02-21 18:47:06
SQLAlchemy-可搜索不对现有数据进行索引。这必须通过执行同步来手动完成。对于上面的表定义,下面的代码就足够了:
from sqlalchemy_searchable import sync_trigger
def sync_fts():
sync_trigger(db.engine, 'latest_movies_scraper', 'search_vector', ['name'])这段代码通常是db管理工具(Flask,Click)的一部分。
https://stackoverflow.com/questions/48896993
复制相似问题