Tortoise-ORM提供了bulk_create()
方法,可以用于在单个数据库查询中批量插入多条数据。
下面是一个使用bulk_create()
方法批量插入商品信息到goods表中的示例:
from tortoise import fields
from tortoise.contrib.fastapi import register_tortoise
from tortoise.models import Model
from tortoise import Tortoise
class Goods(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=50)
price = fields.FloatField()
async def insert_goods(goods_data):
goods = [Goods(**data) for data in goods_data]
await Goods.bulk_create(goods)
if __name__ == '__main__':
Tortoise.init_models(["app.models"], "models")
register_tortoise(
app=None,
db_url="sqlite://db.sqlite3",
modules={"models": ["app.models"]},
generate_schemas=True,
)
goods_data = [
{"name": "商品1", "price": 100.0},
{"name": "商品2", "price": 200.0},
{"name": "商品3", "price": 300.0},
]
await insert_goods(goods_data)
这个示例中,bulk_create
方法接收一个列表参数,包含要批量插入的多条数据,并使用**
操作符将数据解包传递给Goods
模型进行创建。通过这种方式,可以在单个数据库查询中批量插入多条数据,提高了插入数据的效率。
如果您需要插入的数据量非常大,可以将数据分成多个小批次批量插入,这样能够降低内存使用,提高程序的稳定性和响应速度。