英文:
how to perform an action when launching the app with FastAPI
问题
我想检查在启动应用程序时用户表中是否有管理员。 如果没有,那么它应该自动添加到PostgreSQL(SQLAlchemy)表中。这是否可能?
事实证明,我需要在应用程序首次启动时初始化管理员帐户。
我将非常感激任何帮助!
我有一个名为User()的模型类:
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String)
password_hash = Column(String)
role = Column(String, default='admin')
created_at = Column(DateTime, default=func.now())
created_by = Column(Integer, ForeignKey('users.id'), default=1)
modified_at = Column(DateTime, default=func.now(), onupdate=func.now())
modified_by = Column(Integer, ForeignKey('users.id'), default=1)
我希望使用.env文件中的用户名和密码,与SQL服务器中的登录名和密码相对应。
我尝试使用SQLAlchemy中的核心事件,但我不确定这是否有助于解决问题。
https://docs.sqlalchemy.org/en/14/core/events.html
英文:
I want to check when launching the application if there is an administrator in the user table. If it is not there, then it should be automatically added to the postgresql(sqlalchemy) table. Is it possible to do this?
It turns out that I need to initialize the administrator account along with the first launch of the application.
I will be grateful for any help!
I have model with class User():
`class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
username = Column(String)
password_hash = Column(String)
role = Column(String, default='admin')
created_at = Column(DateTime, default=func.now())
created_by = Column(Integer, ForeignKey('users.id'), default=1)
modified_at = Column(DateTime, default=func.now(), onupdate=func.now())
modified_by = Column(Integer, ForeignKey('users.id'), default=1)`
And I want to use username and password from .env file, corresponding to the login and password from the sql server.
I'm trying to use core events in sqlalchemy, but I don't understand if this can help.
答案1
得分: 0
我建议你使用数据库迁移工具(例如alembic)。然后,你可以创建一个名为“Init”的迁移,其中你可以添加用于创建管理员的查询。但接下来,你需要运行你的程序,类似于 alembic upgrade head && uvicorn main:app
。
英文:
I can recommend you to use migration tool for your db (like alembic).
Then you can create "Init" migration where you can add query to create admin.
But then you need to run your program like alembic upgrade head && uvicorn main:app
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论