使用 SQLAlchemy 如何在使用 db.create_all() 创建数据库后填充行

Jeu*_*uke 6 python sqlalchemy flask flask-sqlalchemy

我的 SQLAlchemy app.py 中有一个 create_all 调用

@app.before_first_request
def create_tables():
    db.create_all()
Run Code Online (Sandbox Code Playgroud)

并在 user.py 模型文件中定义一个基本用户:

class UserModel(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(80))
    password = db.Column(db.String(80))

    def __init__(self, username, password):
        self.username = username
        self.password = password
Run Code Online (Sandbox Code Playgroud)

我想预先填充一些默认数据,在这个例子中是一些基本用户:

    admin = self('admin', 'test')
    guest = self('guest', 'test')
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式在 app.py 中输入它们吗?或者在另一个 create_data.py 类型文件中?

小智 5

您可以创建一个 example_data.py 文件,如下所示:

from user import UserModel

def db_load_example_data(app, db):
    admin = UserModel('admin', 'test')
    guest = UserModel('guest', 'test')
    with app.app_context():
        db.session.add(admin)
        db.session.add(guest)
        db.commit()
Run Code Online (Sandbox Code Playgroud)

然后在您的启动脚本中,您可以调用它

from example_data import db_load_example_data

db_load_example_data(app, db)
Run Code Online (Sandbox Code Playgroud)