在数据库迁移后进行搜索

时间:2016-01-31 04:24:28

标签: database postgresql sqlite flask whoosh

我使用以下三个步骤将数据库从sqlite3迁移到postgresql

  1. 我使用

    创建一个sqlite转储文件

    sqlite3 app.db .dump> app_dump.sql

  2. 我创建了一个postgresql数据库,并将我的models.py文件初始化为

    python manage.py db init

  3. 其中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()
    
    1. 我只使用转储文件中的插入行来填充新数据库。
    2. 这很好用,但我确实希望在我的用户表中进行嗖嗖搜索。

      我的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)
      

      然而,搜索似乎根本不起作用。我担心表格没有正确编入索引?谁知道我怎么解决这个问题? 谢谢 卡尔

      编辑: 解决了......看看吧 https://gist.github.com/davb5/21fbffd7a7990f5e066c

1 个答案:

答案 0 :(得分:1)

默认情况下,flask_whooshalchemy会在sqlalchemy会话提交时为记录编制索引。因此,如果您想索引所有非索引数据,您可以尝试我的名为flask_whooshalchemyplus的fork,请参阅手动索引简介。