Flask-SQLAlchemy 集成#
警告
查询界面在 SQLAlchemy 中被视为过时的。改为使用 session.execute(search(...))
。
SQLAlchemy-Searchable 可使用 SearchQueryMixin
类集成到 Flask-SQLAlchemy 中。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy.query import Query
from sqlalchemy_utils.types import TSVectorType
from sqlalchemy_searchable import SearchQueryMixin, make_searchable
app = Flask(__name__)
db = SQLAlchemy(app)
make_searchable(db.metadata)
class ArticleQuery(Query, SearchQueryMixin):
pass
class Article(db.Model):
query_class = ArticleQuery
__tablename__ = "article"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
content = db.Column(db.Text)
search_vector = db.Column(TSVectorType("name", "content"))
db.configure_mappers() # very important!
with app.app_context():
db.create_all()
SearchQueryMixin
为 ArticleQuery
提供 search
方法。你可以串联调用,就像使用查询过滤器调用一样。在这里,我们搜索包含单词“Finland”的前五篇文章。
Article.query.search("Finland").limit(5).all()