【问题标题】:how to load pre-existing data flask-sqlalchemy如何加载预先存在的数据 flask-sqlalchemy
【发布时间】:2019-06-05 08:16:49
【问题描述】:

我正在使用flask_restful 编写REST API,并使用flask-sqlalchemy 管理mysql 数据库。我想知道在应用程序启动时将现有数据加载到表中的最佳做法是什么。

我目前正在使用带有 @app.before_first_request 装饰器的端点调用 db.create_all() 方法。然后我想填写使用csv 文件中的现有数据创建的表之一。代码应该在单独的脚本中还是在函数中推送数据?

谢谢!

【问题讨论】:

    标签: python mysql rest flask-sqlalchemy flask-restful


    【解决方案1】:

    我会将加载初始数据库数据与应用程序初始化分开,因为根据我的经验,初始数据可能不会经常更改并且如果文件更大可能需要一些时间,通常您不需要在数据库中重新加载它应用程序加载时间。

    我认为您肯定会在应用程序开发的某个阶段需要数据库迁移,因此我建议设置Flask-Migrate 来处理该问题,并在应用程序创建时运行其升级方法(如果您正在使用create_app 方法Flask application factories pattern) 将处理数据库迁移。我这么说是因为当您稍后在已经填充了实际数据的数据库中引入它时,它会为您省去一些麻烦,这些数据是用db.create_all() 初始化的。

    对于使用种子数据填充数据库,我会使用 Flask CLIFlask-Script。在我最近的一个项目中,我为此使用了 Flask-Script,并创建了单独的 manage.py 文件,该文件在其他应用程序管理方法中包含看起来像这样的初始数据播种方法:

    @manager.command
    def seed():
        "Load initial data into database."
        db.session.add(...)
        db.session.commit()
    

    它是通过以下命令按需运行的:

    python manage.py seed
    

    【讨论】:

    • 谢谢!那是伟大的洞察力。 Flask-script 听起来像是要走的路,但我必须阅读更多关于 flask-migrare 的内容,看看它如何适合我的项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多