我正在使用烧瓶,sqlalchemy和flask-sqlalchemy.我想在postgres中使用gin和to_tsvector创建一个完整的测试搜索索引.目前,我正在尝试以下方面.我认为它是我最接近我想要表达的东西,但是不起作用.
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.schema import Index
from sqlalchemy.sql.expression import func
from app import db
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
added = db.Column(db.DateTime, nullable=False)
pub_date = db.Column(db.DateTime, nullable=True)
content = db.Column(db.Text)
@declared_attr
def __table_args__(cls):
return (Index('idx_content', func.to_tsvector("english", "content"), postgresql_using="gin"), )
Run Code Online (Sandbox Code Playgroud)
这会引发以下错误......
Traceback (most recent call last):
File "./manage.py", line 5, in <module>
from app import app, db
File "/vagrant/app/__init__.py", line 36, in <module>
from pep.models import *
File "/vagrant/pep/models.py", line 8, in <module>
class Post(db.Model):
File "/home/vagrant/.virtualenvs/pep/local/lib/python2.7/site-packages/flask_sqlalchemy.py", …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种在sqlalchemy中使用tsvector的方法(就像INTEGER等其他类似的东西),但到目前为止我还不清楚如何做到这一点.我已经读过tsvector可以使用UserDefinedType实现为一个类型.经过一些尝试,我无处可去,有人有一个简单的方法来做到这一点?谢谢