Python 使用peewee创建带有外键的表将报告mysql 1452错误
我通过peewee创建了一个用户表和一个组表,然后有一个多对多关联表user\u group,我通过函数create\u user创建了一个userPython 使用peewee创建带有外键的表将报告mysql 1452错误,python,mysql,python-3.x,peewee,Python,Mysql,Python 3.x,Peewee,我通过peewee创建了一个用户表和一个组表,然后有一个多对多关联表user\u group,我通过函数create\u user创建了一个usertest和一个grouptest。我想在用户组表中添加一个字段。我遵循官方网站的方法。为什么我会出错 database = MySQLDatabase('test1', user='root', host='x.x.x.x', port=3306, passwd='xxxx') class BaseModel(Model): class M
test
和一个grouptest
。我想在用户组表中添加一个字段。我遵循官方网站的方法。为什么我会出错
database = MySQLDatabase('test1', user='root', host='x.x.x.x', port=3306, passwd='xxxx')
class BaseModel(Model):
class Meta:
database = database
class Users(BaseModel):
name = CharField(max_length=32, null=False)
email = CharField(max_length=64, null=True)
phone = CharField(max_length=11, null=False)
password = CharField(max_length=32 ,null=False)
class Groups(BaseModel):
name = CharField(max_length=32, unique=True, null=False)
class User_group(BaseModel):
user_id = ForeignKeyField(Users,backref='user_groups')
group_id = ForeignKeyField(Groups,backref='user_groups')
def create_user():
user = Users.create(name="test",email="test@g.com",phone="13142134252",password="test")
group = Groups.create(name="test")
User_group.create(uesr_id=user,group_id=group)
我怀疑我的mysql有任何问题,所以我在命令行下执行insert命令。但发现它可以成功插入
你能给我一些帮助吗,提前谢谢你的打字错误:
Traceback (most recent call last):
File "E:\OWG_devops\venv\lib\site-packages\django\core\handlers\exception.py", line 35, in inner
response = get_response(request)
File "E:\OWG_devops\venv\lib\site-packages\django\core\handlers\base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "E:\OWG_devops\venv\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "E:\OWG_devops\venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "E:\OWG_devops\venv\lib\site-packages\django\views\generic\base.py", line 69, in view
return self.dispatch(request, *args, **kwargs)
File "E:\OWG_devops\venv\lib\site-packages\rest_framework\views.py", line 505, in dispatch
response = self.handle_exception(exc)
File "E:\OWG_devops\venv\lib\site-packages\rest_framework\views.py", line 465, in handle_exception
self.raise_uncaught_exception(exc)
File "E:\OWG_devops\venv\lib\site-packages\rest_framework\views.py", line 476, in raise_uncaught_exception
raise exc
File "E:\OWG_devops\venv\lib\site-packages\rest_framework\views.py", line 502, in dispatch
response = handler(request, *args, **kwargs)
File "E:\OWG_devops\OWG_devops\OWGDevops\app\views.py", line 113, in post
create_user(serializer.data, user.get("groups"))
File "E:\OWG_devops\OWG_devops\OWGDevops\auth\Operation.py", line 6, in create_user
User_group.create(uesr_id=user,group_id=group)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 6346, in create
inst.save(force_insert=True)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 6556, in save
pk = self.insert(**field_dict).execute()
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 1907, in inner
return method(self, database, *args, **kwargs)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 1978, in execute
return self._execute(database)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 2745, in _execute
return super(Insert, self)._execute(database)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 2474, in _execute
cursor = database.execute(self)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 3157, in execute
return self.execute_sql(sql, params, commit=commit)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 3151, in execute_sql
self.commit()
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 2917, in __exit__
reraise(new_type, new_type(exc_value, *exc_args), traceback)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 190, in reraise
raise value.with_traceback(tb)
File "E:\OWG_devops\venv\lib\site-packages\peewee.py", line 3144, in execute_sql
cursor.execute(sql, params or ())
File "E:\OWG_devops\venv\lib\site-packages\MySQLdb\cursors.py", line 206, in execute
res = self._query(query)
File "E:\OWG_devops\venv\lib\site-packages\MySQLdb\cursors.py", line 319, in _query
db.query(q)
File "E:\OWG_devops\venv\lib\site-packages\MySQLdb\connections.py", line 259, in query
_mysql.connection.query(self, query)
peewee.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`test1`.`user_group`, CONSTRAINT `user_group_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)')
应该是:
User_group.create(uesr_id=user,group_id=group)
在外键字段中添加“_id”后缀也不常见。最好:
User_group.create(user_id=user, group_id=group)
class User_group(BaseModel):
# Peewee will use "user_id" and "group_id" for the column by default
user = ForeignKeyField(Users,backref='user_groups')
group = ForeignKeyField(Groups,backref='user_groups')