django之ORM数据库操作

一、ORM介绍

orm其实就是对象关系映射,内部ORM 将其转化成对应SQL语句再去执行

映射关系:

  表名 --------------------》类名

  字段--------------------》属性

  表记录-----------------》类实例化对象

开发者通过操作类和对象,内部

 

ORM的两大功能:

  操作表:

    - 创建表

    - 修改表

    - 删除表

  操作数据行:

    - 增删改查

 

 

其实用django实现的models文件就是底层调用了pymysql这个模块

 

ORM利用pymysql第三方工具链接数据库

Django没办法帮我们创建数据库,只能我们创建完之后告诉它,让django去链接

 

创建表之前的准备工作

一、自己创建数据库

二、在settings里面配置mysql数据库链接

  sqlite3------改为mysql

 

你的django再创建的时候执行完settings后还会执行你创建的app中的init文件 你再在你的app文件中的init中导入pymsql

在setting中更改导入的信息先注释DATABSE再导入下面的信息

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'db5',  # 要连接的数据库,连接前需要创建好
        'USER':'root', # 连接数据库的用户名
        'PASSWORD':'zhaoyun',  # 连接数据库的密码
        'HOST':'127.0.0.1',       # 连接主机,默认本级
        'PORT':3306    #  端口 默认3306
    }
}

 

因为我们用的是python3版本的解释器 ,默认是支持python2的解释器

然后再去你的app下的init文件中导入信息:

import pymysql

pymysql.install_as_MySQLdb()

 django之ORM数据库操作_第1张图片

 

 

再去创建的app中的models中设置你的sql信息

from django.db import models

# Create your models here.

class Book(models.Model):
    nid = models.AutoField(primary_key = True) #括号内是设置主键 这是设置一个int类型的
    title = models.CharField(max_length = 32,unique=True)  # 设置一个var类型的   这里面是最大字符的  并且设置唯一
    pricle = models.DecimalField(max_digits = 8,decimal_places=2)# 999999.99
    publish = models.CharField(max_length=32)  # 设置最大字符

 

 执行命令创建:(需要记住的!!!) 

python3 manage.py makemigrations   创建脚本
python3 manage.py migrate   迁移

这两个语句在你的pycharm的下面

django之ORM数据库操作_第2张图片

 

这里执行

 

 

也可以点击pycharm的Tools然后选择 Run manage.py make 然后直接输入makemigrations 和migrate 即可

django之ORM数据库操作_第3张图片

在下部依次输入执行:

makemigrations
migrate

 

 

 

更多字段:

'''
 
<1> CharField
        字符串字段, 用于较短的字符串.
        CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数.
 
<2> IntegerField
       #用于保存一个整数.
 
<3> FloatField
        一个浮点数. 必须 提供两个参数:
         
        参数    描述
        max_digits    总位数(不包括小数点和符号)
        decimal_places    小数位数
                举例来说, 要保存最大值为 999 (小数点后保存2位),你要这样定义字段:
                 
                models.FloatField(..., max_digits=5, decimal_places=2)
                要保存最大值一百万(小数点后保存10位)的话,你要这样定义:
                 
                models.FloatField(..., max_digits=19, decimal_places=10)
                admin 用一个文本框()表示该字段保存的数据.
 
<4> AutoField
        一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接使用这个字段;
        自定义一个主键:my_id=models.AutoField(primary_key=True)
        如果你不指定主键的话,系统会自动添加一个主键字段到你的 model.
 
<5> BooleanField
        A true/false field. admin 用 checkbox 来表示此类字段.
 
<6> TextField
        一个容量很大的文本字段.
        admin 用一个