django ORM(一)

 一、数据库连接

1.数据库的连接配置
django 连接mysql的配置流程:
- 安装 pymysql pip install pymysql
   (1) 数据库用户
    有创建数据库权限的用户
   (2) 创建数据库

- 修改配置
settins

.在settings.py中配置DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',               # 数据库引擎
        'NAME': 'mydb',                                                      #数据库名称
        'USER': 'admin',                                                      # 链接数据库的用户名
        'PASSWORD': 'Root110qwe',                                # 链接数据库的密码
        'HOST': '127.0.0.1',                                                # mysql服务器的域名和ip地址
        'PORT': '3306',                                                        # mysql的一个端口号,默认是3306
    }
}

- 修改项目文件夹(和settings.py文件所在的目录)下
__init__.py 文件
写上:

 

import pymysql
pymysql.install_as_MySQLdb()


- 设置时区 TIME_ZONE = 'Asia/ShangHai' # 北京时间


二.django的ORM系统


-对象关系映射(Object Relational Mapping,简称ORM)!
简单的说就是用面向对象的方式,描述数据库,操作数据库,
达到不用编写SQL语句就能对数据库进行增删改查。

  

1.ORM概念:对象关系映射(Object Relational Mapping,简称ORM)

2.ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。

三.模型的创建与激活


创建模型
Student的模型,代表啊学生

from django.db import models

# Create your models here.

class Student(models.Model):
    name = models.CharField(max_length=20)
    age = models.SmallIntegerField(default=0)
    sex = models.SmallIntegerField(default=1)
    qq = models.CharField(max_length=20,unique=True,null=True)
    phone = models.CharField(max_length=20,unique=True,null=True)
    c_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
    grade = models.ForeignKey('Grade',on_delete=models.SET_NULL,null=True)
    e_time = models.DateTimeField(verbose_name='编辑时间',auto_now=True)
    is_delete = models.BooleanField(verbose_name='删除标记',default=False)


总结:
1. 每一个模型都是django.db.models.Model的子类
2. 类变量 表示模型中的数据库字段
3. 每一个字段由一个字段类的实例表示
激活模型
1.在项目中注册app
2.运行数据库迁移命令(一定要在项目根目录下)
python mange.py makemigrations teacher
告诉django,我们做了哪些数据库的更改
迁移
sqlmigrate 从迁移获取sql语句
--
-- Create model Student
--
CREATE TABLE `teacher_student` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(20) NOT NULL,
`age` smallint NOT NULL,
`sex` smallint NOT NULL,
`qq` varchar(20) NOT NULL,
`phone` varchar(20) NOT NULL,
`c_time` datetime(6) NOT NULL);
COMMIT;
3.运行migrate命令,使迁移生效
python manage.py migrate
# 表名 appname_模型name.lower


四.数据的增删改查


-工具 djang shell 调试工具
python manage.py shell
- 增
4种方法

#第一种
student = Student(name='张三 ',age=18)
student.save()
#第二种
student = Student()
student.name = '李四'
student.age = 18
student.save()
#第三种
Student.objects.create(name='王五',age=16)
#第四种
Student.objects.get_or_create(name='赵六',age=17)

- 查

Student.objects.all()

Student.objects.filter(name='李四',age='18')

Student.objects.get(id=1)

  -删

Student.objects.all().delete()

Student.objects.filter(name='李四',age='18').delete()

Student.objects.get(id=1).delete()

  -改

Student.objects.filter(name='李四',age='18').update(name='钱七')


student = Student.objects.get(id=1)
student.name='王五'
student.save()

猜你喜欢

转载自www.cnblogs.com/liujuejun/p/10517998.html
今日推荐