繁体   English   中英

如何加载预先存在的数据烧瓶-sqlalchemy

[英]how to load pre-existing data flask-sqlalchemy

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

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

谢谢!

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

我认为您肯定会在应用程序开发的某个时刻需要数据库迁移,因此我建议您设置Flask-Migrate来处理该问题,并在应用程序创建时运行其升级方法(如果使用Flask 应用程序工厂模式,则使用create_app方法)它将处理数据库迁移。 我之所以这样说是因为,当您稍后在已经用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM