django基础 -- 5. ORM 数据库操作

一. ORM 对象关系映射

  类   ------   表

  类对象   ------   记录

  类属性   ------   字段

 django基础 -- 5. ORM 数据库操作_第1张图片

 

二.  连接数据库配置

  1.在  setting.py 文件中重新设置  DATABASES

  ① 删除原有的 sqlite3配置的 DATABASES

#sqlite3的配置
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }

  注: sqlite3 是django 自带的数据库  功能较mysql 差

 

  ② 添加连接  mysql 配置的  DATABASES

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

 

   2.在项目中   init.py  文件里面写上

import pymysql
pymysql.install_as_MySQLdb()

 

django基础 -- 5. ORM 数据库操作_第2张图片

 

  3.添加 app 应用是 在setting 文件中 进行注册

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',  #方式1
    'app02',  #方式2

]

 

 

  4.数据库每次修改要执行命令(在terminal 执行)

Python manage.py makemigrations  (在 migrations 文件中进行记录)


Python manage.py migrate       (创建表)

 

三.创建表的操作  (在django中不能创建库)

  1.基本方式(在应用里的  models.py 文件中创建表 ,字段)

  示例

class Book(models.Model):

    id = models.AutoField(primary_key=True)   #主键
    title = models.CharField(max_length=32,unique=True)    #字符串
    price = models.DecimalField(max_digits=16,decimal_places=2)   #小数
    pub_time = models.DateField()  #日期
    publish = models.CharField(max_length=20)


    # def __str__(self):

       #    return self.title

 

   2.更多字段

'''
 
<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=17, decimal_places=10) #max_digits大于等于17就能存储百万以上的数了
                admin 用一个文本框()表示该字段保存的数据.
 
<4> AutoField
        一个 IntegerField, 添加记录时它会自动增长. 你通常不需要直接使用这个字段;
        自定义一个主键:my_id=models.AutoField(primary_key=True)
        如果你不指定主键的话,系统会自动添加一个主键字段到你的 model.
 
<5> BooleanField
        A true/false field. admin 用 checkbox 来表示此类字段.
 
<6> TextField
        一个容量很大的文本字段.
        admin 用一个