在 SqlAlchemy 中创建 table 后立即插入数据

Inserting data right after create table in SqlAlchemy

我正在使用 SqlAlchemy 创建我的 tables 并有一个名为 UserTypes

的 table

编号 |类型

0 |所有者

1 |客户

在我的用户 table 中,我将用户类型 ID 作为外键。每当我想创建一个用户时,我想分配用户类型默认值 0。但是我的用户类型 table 是空的,所以我想在它用 SqlAlchemy 创建后立即填充这个 table,并进一步锁定插入。问题是我可以插入

这是我的 User 和 UserType 模态。

class User(Model):       

    id = Column(db.Integer, primary_key=True)
    email = Column(db.String(64), unique=True, index=True)
    username = Column(db.String(15), unique=True, index=True)
    name = Column(db.String(64))
    password_hash = Column(db.String(128))
    usertype_id = Column(db.Integer, db.ForeignKey('user_types.id'), default=DEFAULT_USERTYPE)

class UserType(db.Model):

   __tablename__ = 'user_types'
   id = db.Column(db.Integer, primary_key=True)
   name = db.Column(db.String(64), index=True, unique=True)   
   users = db.relationship('User', backref='user_types', lazy='dynamic') 
   

您可以在 app/__init__.pay 中添加用户类型。您必须检查 table 保存在哪个键下,我不确定它是 'usertype' 还是 'user_types'。

if 'user_types' not in db.metadata.tables.keys():
    db.create_all()
    t1 = UserType()
    t1.id = 0
    t1.name = 'Owner'
    db.session.add(t1)
    t2 = UserType()
    t2.id = 1
    t2.name = 'Customer'
    db.session.add(t2)
    db.session.commit()