Flask-Sqlalchemy + Sqlalchemy-searchable Zurückgeben einer leeren Liste
Zum ersten Mal auf der Website, also hallo an alle und vielen Dank im Voraus. Langjähriger Lauerer und Newb.
Ich arbeite an einer Web-App in flask mit Flask-SqlAlchemy und SqlAlchemy-Searchable (docs->https: //sqlalchemy-searchable.readthedocs.org/en/latest/index.htm). Aus einem Grund kann ich nicht herausfinden, wenn ich ein @ versucähnlic Beispiel für den Code auf der Dokumentseite:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy, BaseQuery
from sqlalchemy_searchable import SearchQueryMixin
from sqlalchemy_utils.types import TSVectorType
from sqlalchemy_searchable import make_searchable
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql+psycopg2://usr:admin@localhost/dev'
app.config['SECRET_KEY'] = 'notreallyasecret'
db = SQLAlchemy(app)
make_searchable()
class ArticleQuery(BaseQuery, SearchQueryMixin):
pass
class Article(db.Model):
query_class = ArticleQuery
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(255))
content = db.Column(db.UnicodeText)
search_vector = db.Column(TSVectorType('name', 'content'))
Meine Suchanfragen funktionieren nicht richtig. Ich öffnete eine Python-Shell, erstellte die Datenbank und fügte fünf identische Artikel ein
a= Article(name='finland',content='finland')
db.session.add(a)
db.session.commit() #a-e
mit 'finnland' sowohl als name als auch als inhalt. Nach dem Beispiel:
Article.query.search(u'finland').limit(5).all()
Es sollten Artikel zurückgegeben werden, die irgendwo in Finnland sind. In meinem Fall bekomme ich eine leere Liste. Ich erhalte ein Objekt zurück, wenn ich die Beispielabfrage wie folgt ändere:
Article.query.search(' ').first()
Aber es ist ziemlich nutzlos, nach leeren Räumen zu suchen. Irgendwelche Ideen
Hinzufügen von etwas mehr: Ich habe festgestellt, dass in der Artikeltabelle die Spalte "search_vector tsvector" vollständig leer ist, obwohl die Daten in den Inhalts- und Namensspalten enthalten sind. Ich bin mir nicht sicher, ob das irgendetwas damit zu tun hat.