Django学习备忘录 – 在models.py中保存到创建的数据库的方法
首先
以下是关于Django的个人学习笔记。我将使用ChatGPT查询的内容和额外查询的内容整理成一篇文章,以便日后查阅。如果有错误的地方,由于我没有进行信息核实,敬请指正。
将数据存储到数据库中的方法
有两种主要的方法。
一种是通过Django模型保存的方法,另一种是不经过Django模型的方法。
不经过Django模型的方法可以通过使用Python的标准数据库API来实现。
这包括Python的sqlite3模块以及用于访问MySQL和PostgreSQL的psycopg2和mysql-connector-python等,但在这里省略不提。
使用Django模型的好处是什么?
Django为与数据库的交互提供了一个对象关系映射(ORM)来抽象化。这使得应用程序可以在Python代码中进行数据库操作,而不用考虑使用的是哪种数据库。
总之,无论使用SQLite、MySQL还是PostgreSQL,都可以使用相同的Django模型代码(例如save方法或objects.create方法)将数据保存到数据库中。
因此,即使更改数据库引擎,大多数情况下也不需要修改Python代码。但是,您需要在Django的配置中修改数据库引擎的设置。
从管理员页面保存
您可以通过管理页面输入并保存数据。这是一个常用于创建博客网站的示例。请查看链接获取更多详细信息。
创建实例后,通过save方法进行保存
使用Django模型将数据保存到数据库的基本方法是创建一个新模型的实例并调用其save方法。
-
- 创建模型实例:
-
- 假设有一个模型Person。要创建一个新的实例,可以按照以下方式进行操作:
my_app.py
from myapp.models import Person
person = Person(name=”John Doe”, age=25)
保存实例:
创建模型实例后,若要将该实例保存到数据库中,则需要调用save方法:
my_app.py
person.save()
使用save方法,将新的Person实例保存到数据库中。需要注意的是,如果要更新已存在实例的字段,也可以使用save方法。
使用bulk_create方法一次保存多个数据
如果要一次将多个模型实例保存到数据库中,可以使用bulk_create方法。
from myapp.models import Person
people = [
Person(name="John Doe", age=25),
Person(name="Jane Doe", age=30),
# ...
]
Person.objects.bulk_create(people)
这个方法是一种高效的方式,可以同时将多个记录保存到数据库中。
我个人在将pandas的DataFrame保存到数据库时使用它。
def save_df_to_database(df):
persons = [
Person(
first_name=row['first_name'],
last_name=row['last_name'],
birth_date=row['birth_date'],
)
for index, row in df.iterrows()
]
Person.objects.bulk_create(persons)
从df中逐行提取数据创建实例,将创建的实例存储在列表中,最后一次性保存到数据库中。
使用create方法一次完成对象的创建和保存
在模型中也有create方法,使用它可以一次完成模型实例的创建和保存。
person = Person.objects.create(name="John Doe", age=25)
在不需要对数据进行处理的情况下,可以通过省略代码来使用save方法,而不是创建实例后再进行数据处理。
总结
通过使用Django模型,可以在不依赖于数据库的情况下统一地进行保存。
如果希望直接创建实例并保存,可以使用”create方法”。
如果创建实例后需要进行处理或其他操作,可以使用”save方法”。
如果希望批量保存多个数据,可以使用”bulk_create方法”。