📜  django 插入批量数据 - Python (1)

📅  最后修改于: 2023-12-03 15:14:44.174000             🧑  作者: Mango

Django 插入批量数据

在开发中,我们经常需要将一批数据插入到数据库中。Django 提供了多种方式来实现批量插入数据的操作。

使用 ORM 批量插入数据

我们可以使用 Django 的 ORM 来实现插入批量数据的操作。假设我们有以下的模型类:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=5, decimal_places=2)

如果我们要插入多个 Book 实例,可以使用 bulk_create 方法:

books = [
    Book(title='The Great Gatsby', author='F. Scott Fitzgerald', price='19.99'),
    Book(title='To Kill a Mockingbird', author='Harper Lee', price='12.99'),
    Book(title='1984', author='George Orwell', price='9.99'),
]

Book.objects.bulk_create(books)

以上代码将创建三个 Book 实例,并将它们作为一批数据插入到数据库中。bulk_create 方法将自动处理事务。

使用 SQL 语句批量插入数据

在某些情况下,我们可能需要使用 SQL 语句来批量插入数据。可以使用 Django 的 connection 对象来执行 SQL 语句。以下示例将演示如何使用 SQL 语句批量插入数据。

from django.db import connection

with connection.cursor() as cursor:
    # 批量插入数据
    cursor.execute("""
        INSERT INTO books (title, author, price)
        VALUES
            ('The Great Gatsby', 'F. Scott Fitzgerald', 19.99),
            ('To Kill a Mockingbird', 'Harper Lee', 12.99),
            ('1984', 'George Orwell', 9.99);
    """)

以上代码将执行一条 SQL 语句,将三个 Book 实例作为一批数据插入到数据库中。需要注意的是,使用 SQL 语句插入数据时需要手动处理事务。

总结

本文介绍了使用 Django 的 ORM 和 SQL 语句批量插入数据的方法。在实际开发中,我们可以根据具体情况选择使用哪种方法。如果我们需要插入的数据集较小,使用 ORM 的 bulk_create 方法会很方便。如果我们需要插入的数据集较大,使用 SQL 语句会更高效。