Django实现数据表数据插入(创建Model实例)



在前一节,我们利用 Model 模型类创建了 index 应用所需的三张数据表,在本节我们介绍如何实现在 Django 项目中创建 Model 的实例对象,即向数据表中插入数据。

Django 为创建 Model 实例提供了两种方法,一种是直接调用 Model 的 save 方法,另一种是通过对象管理器(objects Manager) 的 create 方法。这种中方法都可以实现创建 Model 实例对象。下面我们使用 Django shell 交互环境依次对这两种方法进行解析。
Django shell 是 Django 提供一种交互环境,类似于 Python shell,开发人员可直接通过 shell 环境 与 Django 项目进行交互,它一种很实用的工具。

1. save方法创建Model实例

在 cmd 命令行进入项目 manage.py 目录下,然后使用如下命令进入 Django shell 环境。

python manage.py shell

然后创建 Model 实例,使用 save() 方法保存数据,如下所示:

from index.models import Book

book=Book(title="Python",public="a",price="59.00",retail_price="59.00")
book.save()
book=Book(title="Flask",public="b",price="39.00",retail_price="39.00")
book.save()
book=Book(title="Django",public="b",price="40.00",retail_price="40.00")
book.save()

最后调用 save 方法进行保存。通过上述代码,我们就在数据库中添加了三条有关书籍的记录。

创建 Book 实例,其实就是填充有关 Model 实例的各个字段,如果设置了默认值或者有允许为 null 的字段可以不填,最后调用 save() 保存实例(该方法没有返回值)。在 save() 执行以后,Django 会将 book实例化数据保存到数据库中。

注意,每创建一条数据都需要调用一次 save() 方法,我们通过查看数据库可以得知数据信息已经保存完毕。如下所示:

mysql> select * from index_book;
+----+--------+--------+-------+--------------+
| id | title  | public | price | retail_price |
+----+--------+--------+-------+--------------+
|  1 | Python | a      | 59.00 |        59.00 |
|  2 | Flask  | b      | 39.00 |        39.00 |
|  3 | Django | b      | 40.00 |        40.00 |
+----+--------+--------+-------+--------------+
3 rows in set (0.00 sec)

避坑提示,若在实例化数据对象的过程中,Django shell 出现以这样的报错信息:

InternalError: (1366, "Incorrect string value: '\\xE8\\xAF\\xAD\\xE8\\xA8\\x80...' for column 'public' at row 1")

说明我们添加的 public 字段的信息超过可字段本身的最大长度限制,即 manx_length=50。解决方法是将字段 max_length 值变大然后需要重新执行数据库迁移的操作,或者将你输入的信息缩短从而符合其规定的长度。

save() 方法还可以保存已有对象更改后的信息,比如:

book.title="JavaScript"
book.save()

2. create方法创建Model实例

除了以上方法外,我们也可以使用管理器对象提供的 create() 方法,使用方法如下所示:

In [1]: Book.objects.create(title="Java",public="a",price="30.00",retail_price="30.00")
Out[1]: <Book: title:Java public:a price:30.00>

然后继续插入如下数据:

from index.models import Book
In [2]: Book.objects.create(title="MySQL",public="c",price="35.00",retail_price="35.00")
Out[2]: <Book: title:MySQL public:c price:35.00>
In [3]: Book.objects.create(title="C#",public="a",price="45.00",retail_price="40.00")
Out[3]: <Book: title:C
In [4]: Book.objects.create(title="Redis",public="c",price="25.00",retail_price="25.00")
Out[4]: <Book: title:Redis public:c price:25.00>

这种创建 Model 实例对象的过程比较简单,create 执行之后就在数据库中插入了一条记录,这也是我们推荐使用的方法。最后访问数据库可以看到最新插入的数据记录:

mysql> select * from index_book;
+----+--------+--------+-------+--------------+
| id | title  | public | price | retail_price |
+----+--------+--------+-------+--------------+
|  1 | Python | a      | 59.00 |        59.00 |
|  2 | Flask  | b      | 39.00 |        39.00 |
|  3 | Django | b      | 40.00 |        40.00 |
|  4 | Java   | a      | 30.00 |        30.00 |
|  5 | MySQL  | c      | 35.00 |        35.00 |
|  6 | C
|  7 | Redis  | c      | 25.00 |        25.00 |
+----+--------+--------+-------+--------------+

本节我们完成了向数据表插入数据记录的操作,不管是在 shell 环境下,还是项目的代码中都可以使用以上两种方法实现创建 Model 实例。后续章节会将涉及 Django 表的数据查询,我们还会用到本节内容。

Original: https://blog.csdn.net/ccc369639963/article/details/125158050
Author: 睿科知识云
Title: Django实现数据表数据插入(创建Model实例)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/736298/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python实现API的调用

    在日常工作中,可能需要结合网上现在的一些API或者公司提供的数据接口来得到相应的数据或者实现对应的功能。因此API的调用和数据接口的访问都是做数据分析的一个常用操作,如何快速实现A…

    Python 2023年8月2日
    032
  • python 笔记:h5py

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年12月25日
    085
  • Yolo-fastest+dnn+flask实现移动端推流&拉流并在web显示

    转载请注明出处!转载请注明出处!转载请注明出处! 项目代码链接:https://github.com/pengtougu/Push-Streaming.git 已经两三点了,太困了…

    Python 2023年8月12日
    016
  • inkscape 无法改变颜色的解决方法

    有时候无法对某个描边改变颜色(填充),这时候要打开描边才能改变颜色 Original: https://www.cnblogs.com/daxiangcai/p/16716861….

    Python 2023年6月12日
    046
  • Arduino驱动OLED显示屏

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年2月5日
    0103
  • scrapy框架的安装及基本使用

    一、 环境的安装: mac or linux:pip install scrapy windows: 1、 pip install wheel 2、下载twisted,下载地址为h…

    Python 2023年10月5日
    09
  • 线性回归python实现详解(附公式推导)

    1线性回归 在简单线性回归中,输入x只有一个特征,通过调整a和b的参数值,来拟合从x到y的线性关系。下图为进行拟合所需要优化的目标,也即是MES(Mean Squared Erro…

    Python 2023年8月2日
    032
  • Anaconda的升级、配置及使用

    1、安装:通过腾讯电脑管家软件管理安装 2、处理源: 以管理员身份,运行Anaconda Prompt 输入 conda –version&#xA0;如果正常输出了 co…

    Python 2023年8月2日
    047
  • 【python】“生成器”全方位讲解,包你满意

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年8月28日
    0196
  • Python基于PC版微信实现机器人

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年2月3日
    077
  • Centos 重装Python2.7

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年8月18日
    0262
  • 1229(定积分+numpy)

    数学基础篇(定积分) 1 定积分的概念: 1.1 定积分的定义 注意:定积分是积分的一种,是函数f(x)在区间[a,b]上积分和的极限。定积分与不定积分之间的关系: 若定积分存在,…

    Python 2023年8月26日
    09
  • Python爬虫案例:批量下载超清画质手机壁纸

    前言 开发环境 Python 3.8 Pycharm 模块使用 requests >>> pip install requests 数据请求 parsel &gt…

    Python 2023年11月9日
    010
  • 【K210】K210学习笔记一——sensor

    【K210】K210学习笔记一——sensor 前言 sensor的配置 * 模块导入 模块配置 模块各配置解释 完整源码 前言 本人大四学生,电赛生涯已经走到尽头,一路上踩过不少…

    Python 2023年8月3日
    017
  • .NET 部署 多域名 Https(SSL)通过代码方式

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月31日
    051
  • 这几个Python数据可视化探索实例,拿走不谢

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月13日
    083
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球