django bulk_create

初次用bulk_create新增的数据,检查了数据,并没有重复主键数据,但还是报主键重复的错误。请教下各位大佬是什么原因

File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/models/query.py", line 503, in bulk_create objs_with_pk, fields, batch_size, ignore_conflicts=ignore_conflicts, File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/models/query.py", line 1293, in _batched_insert self._insert(item, fields=fields, using=self.db, ignore_conflicts=ignore_conflicts) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/models/query.py", line 1270, in _insert return query.get_compiler(using=using).execute_sql(returning_fields) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/models/sql/compiler.py", line 1416, in execute_sql cursor.execute(sql, params) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 98, in execute return super().execute(sql, params) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 66, in execute return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers return executor(sql, params, many, context) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/utils.py", line 90, in exit raise dj_exc_value.with_traceback(traceback) from exc_value File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute return self.cursor.execute(sql, params) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 73, in execute return self.cursor.execute(query, args) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/cursors.py", line 148, in execute result = self._query(query) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/cursors.py", line 310, in _query conn.query(q) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/connections.py", line 548, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/connections.py", line 775, in _read_query_result result.read() File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/connections.py", line 1156, in read first_packet = self.connection._read_packet() File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/connections.py", line 725, in _read_packet packet.raise_for_error() File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/protocol.py", line 221, in raise_for_error err.raise_mysql_exception(self._data) File "/Users/fxy/project_venv/user_profile_venv/lib/python3.7/site-packages/pymysql/err.py", line 143, in raise_mysql_exception raise errorclass(errno, errval) django.db.utils.IntegrityError: (1062, "Duplicate entry '1' for key 'PRIMARY'")

评论 1

  • 解决方法通常是检查数据表的唯一约束设置是否正确,并确保没有重复的数据被插入到该字段中。如果数据表中已经存在重复值,需要手动去重或者删除其中一个重复值,以满足唯一约束条件。

  • 谢谢,按照您提供的方法添加了唯一约束,问题解决了。请问一下,源数据是没有重复数据的,那为什么bulk_create这个函数在插入数据的时候会进行重复插入呢?