Я перенесла свою базу данных из sqlite3 в postgresql со следующими тремя шагами
Я создаю файл дампа sqlite с
sqlite3 app.db.dump> app_dump.sql
Я создаю базу данных postgresql и инициализировал ее с помощью файла models.py как
python manage.py db init
где manage.py
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://appuser:777@localhost/app_db'
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
Это сработало хорошо, однако я хочу иметь поиск whoosh в моей таблице User.
Мой models.py выглядит так
if sys.version_info >= (3, 0):
enable_search = False
else:
enable_search = True
import flask.ext.whooshalchemy as whooshalchemy
class User(db.Model):
__searchable__ = ['username','id']
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), index=True)
if enable_search:
whooshalchemy.whoosh_index(app, User)
Однако поиск не работает вообще. Я боюсь, что таблица не была правильно проиндексирована? Кто-нибудь знает, как я могу это исправить? спасибо, карл
EDIT: Решил... взгляните на https://gist.github.com/davb5/21fbffd7a7990f5e066c
По умолчанию flask_whooshalchemy индексирует запись, когда выполняется сеанс sqlalchemy. Поэтому, если вы хотите проиндексировать все неиндексированные данные, вы можете попробовать свою вилку, которая называется flask_whooshalchemyplus, см. Введение в ручную индексацию.
python manage.py db init
создает только папкуmigrations
и некоторые базовые сценарии, а не выполняет настоящую работу.SQLAlchemy
.