如何使用 MySQL 在 django 中批量创建

问题描述 投票:0回答:1

使用bulk_create方法时不返回ID。 PostgreSQL 返回 ID,但 MySQL 不返回。 有没有办法创建一个临时ID来解决?

bar_list = []
foo_list = []
for i in range(3):
    foo = Foo(body="text")
    foo.temp_id = uuid.uuid4()
    foo_list.append(foo)

    bar = Bar(foo_temp_id=foo.temp_id, body="text")
    bar_list.append(bar)

Foo.objects.bulk_create(foo_list)  # The query sets are created, but the ID is None
Bar.objects.bulk_create(bar_list)  # Error occurred because the ID of the referring foo is None
python mysql django bulkinsert
1个回答
0
投票

如果 id 字段是 AutoField,这是 django ORM 的 bulk_create 方法的记录限制之一:

如果模型的主键是 AutoField,则只能在某些数据库上检索主键属性(当前为 PostgreSQL、MariaDB 10.5+ 和 SQLite 3.35+)。在其他数据库上,不会设置。

您要么必须在创建 Foo 对象时显式提供 id,要么在此实例中不能将bulk_create 与 mysql 一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.