flask错误sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) 1452

flaks项目,直接在Terminal窗口python models.py运行文件创建数据库表
表能创建成功,但是使用db.session.add()命令添加数据的时候报1452错
代码如下:

class Role(db.Model):
    """角色"""
    __tablename__ = "role"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 名称
    auths = db.Column(db.String(600))  # 角色权限列表
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间

    def __str__(self):
        return self.name


class Admin(db.Model):
    """管理员"""
    __tablename__ = "admin"
    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 管理员账号
    pwd = db.Column(db.String(100))  # 管理员密码
    is_super = db.Column(db.SmallInteger)  # 是否为超级管理员,0为超级管理员
    role_id = db.Column(db.Integer, db.ForeignKey("role.id"))  # 所属角色
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间


if __name__ == "__main__":
    # db.create_all()
    from werkzeug.security import generate_password_hash
    admin = Admin(
        name="pipi2",
        pwd=generate_password_hash("pipi2"),
        is_super=0,
        role_id=1
    )
    db.session.add(admin)
    db.session.commit()

报错结果如下:

sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`movie`.`a
dmin`, CONSTRAINT `admin_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`))')
[SQL: INSERT INTO `admin` (name, pwd, is_super, role_id, addtime) VALUES (%(name)s, %(pwd)s, %(is_super)s, %(role_id)s, %(addtime)s)]
[parameters: {'name': 'pipi1', 'pwd': 'pbkdf2:sha256:150000$OP1ctcJh$18525ea9b2dff88fa067f9864d32ca5ddba7ad9d341c17f9e32afaaddf1a81ad', 'is_supe
r': 0, 'role_id': 1, 'addtime': datetime.datetime(2019, 10, 28, 9, 1, 36, 12610)}]

原因是:在role这个表中没有id为1的索引值!!!
原因是:在role这个表中没有id为1的索引值!!!
原因是:在role这个表中没有id为1的索引值!!!

重要的事情要说三遍!!!

解决方法:先在role表中添加一行数据,id值为1,再在admin表中添加数据!!!
解决方法:先在role表中添加一行数据,id值为1,再在admin表中添加数据!!!
解决方法:先在role表中添加一行数据,id值为1,再在admin表中添加数据!!!

注意:
1,检查模型中加了”unique=True”属性的字段,在添加记录时是否添加了重复值。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值