如何从 Peewee 中的批量插入中获取 ID?

5 python python-3.x peewee flask-peewee

如何ids从 Peewee 中的批量插入中获取?

我需要返回插入的 id 来创建一个新的 dict 数组,如下所示:

a = [{"product_id": "inserted_id_1", "name": "name1"}, {"product_id": "inserted_id_2", "name": "name1"}]
Run Code Online (Sandbox Code Playgroud)

然后我需要使用批量插入它,例如:

ids = query.insertBulk(a)
Run Code Online (Sandbox Code Playgroud)

反过来,最后一个查询应该返回我的新 ID 以进行进一步的类似插入。

col*_*fer 4

如果您使用 Postgresql,它支持“INSERT ... RETURNING”形式的查询,您可以获得所有 ID:

data = [{'product_id': 'foo', 'name': 'name1'}, {...}, ...]
id_list = SomeModel.insert_many(data).execute()
Run Code Online (Sandbox Code Playgroud)

对于不支持 RETURNING 子句的 SQLite 或 MySQL,您最好这样做:

with db.atomic() as txn:
    accum = []
    for row in data:
        accum.append(SomeModel.insert(row).execute())
Run Code Online (Sandbox Code Playgroud)