博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django ORM(一)
阅读量:6372 次
发布时间:2019-06-23

本文共 2940 字,大约阅读时间需要 9 分钟。

 

 一、数据库连接

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 pymysqlpymysql.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 = 18student.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()

 

转载于:https://www.cnblogs.com/liujuejun/p/10517998.html

你可能感兴趣的文章
android复习清单
查看>>
工作代码备用
查看>>
spring cloud互联网分布式微服务云平台规划分析--spring cloud定时调度平台
查看>>
说说如何配置 Webpack
查看>>
小程序中使用箭头函数的问题
查看>>
走进 JDK 之 Long
查看>>
Android打地鼠游戏的修改和优化
查看>>
Java异常
查看>>
map、reduce、filter、for...of、for...in等总结
查看>>
html2canvas-实现页面截图
查看>>
入门 | 从文本处理到自动驾驶:机器学习最常用的50大免费数据集
查看>>
笔记-从源码角度分析alloc与init的底层
查看>>
消除GitHub上的历史记录
查看>>
自学 JAVA 的几点建议
查看>>
第十三天-企业应用架构模式-对象-关系元数据映射模式
查看>>
k8s与HPA--通过 Prometheus adaptor 来自定义监控指标
查看>>
虎牙直播在微服务改造方面的实践和总结
查看>>
怎样将优酷网站下载的视频KUX转MP4格式
查看>>
MongoDB 分组统计
查看>>
二进制状态码
查看>>