繁体   English   中英

如何在应用程序启动时用一些数据初始化数据库? (fastapi, sqlalchemy)

[英]How to initialize database with some data when app startup? (fastapi, sqlalchemy)

我是 fastapi 和 sqlalchemy 的新手。我正在尝试在启动我的应用程序时初始化一些数据。 这是我的想法:

@app.on_event("startup")
async def startup_event():
    with SessionLocal() as session:
        country_dataframe = pd.read_csv('./initialize_data/country.csv')
        for index, row in country_dataframe.iterrows():
            session.add(models.Country(row.to_dict()))
        session.commit()

但是当我启动它时我无法获取 db session,它显示错误代码:

错误:追溯(最近一次调用最后一次):文件“C:\Users\newia\Miniconda3\envs\fastapi\lib\site-packages\starlette\routing.py”,第 540 行,在 self.lifespan_context 中项目的生命周期异步(app): 文件“C:\Users\newia\Miniconda3\envs\fastapi\lib\site-packages\starlette\routing.py”,第 481 行,在 default_lifespan 等待 self.startup() 文件“C:\Users\ newia\Miniconda3\envs\fastapi\lib\site-packages\starlette\routing.py”,第 516 行,在启动时等待处理程序()文件“D:\Software Projects\PythonProjects\LanguageExchange\app.py”,第 27 行,在 startup_event 中,SessionLocal() 为 session: AttributeError: enter

错误:应用程序启动失败。 退出。

有没有设计模式可以做到这一点? 任何建议将不胜感激。

您可以查看此启动器快速 API模板 我认为您对init_db.py部分感兴趣

暂无
暂无

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

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