Django 链接MySQL

Django创建的项目自带的数据库是SQLite3,我们想要链接MySQL的话,需要更改settings.py中的配置

1.在MySQL中创建好数据库,Django项目不会创建数据库只会根据models.py中的模型类创建对应的表

2.在项目文件下的settings.py文件中,找到 DATABASES属性,配置MySQL相关参数

DATABASES = {
'default': {
# 将数据库引擎修改成 mysql
'ENGINE': 'django.db.backends.mysql',
# 数据库名称
'NAME': 'django_test',
# 数据库所在的主机地址
'HOST': '127.0.0.1',
# MySQL服务的端口号
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'Ad123',
'CHARSET': 'utf8'
}
}

3.找到项目文件下或app(应用程序)下的__init__.py 配置成MySQL

注意:重点!重点!重点!

import pymysql

# 将数据库引擎调整为MySQL
pymysql.install_as_MySQLdb()

4.在对应的app(应用程序)下的 models.py 文件中编写数据库表对应的类

from django.db import models

# 模型类都需要继承 models.Model 类
class Book(models.Model):
# AutoField 表示是int数据类型,auto_increment自增长列,primary_key 表示主键
b_id = models.AutoField(primary_key=True)
# CharField 表示varchar数据类型,必须给 max_length 赋值,表示字符长度
book_name = models.CharField(max_length=64)
# IntegerField 表示int数据类型, default 表示默认值
book_price = models.IntegerField(default=0)

这里运用的就是ORM对象关系映射

ORM(Object Relational Mapping) 对象关系映射:通过使用描述对象和数据库之间映射的方式,将面向对象语言程序中的对象自动持久化到关系数据库中。

本质上就是将数据从一种形式转换到另外一种形式,通俗来讲,能够让一个不会数据库操作的小白也能通过Python面向对象语法,句点符(对象.属性)来简单快捷的操作数据

Python MySQL
类(class) 数据表(table)
对象(object) 记录(数据表中的一行记录)
属性(attribute) 表字段(column)

5.在cmd或pycharm中的Terminal窗口执行数据库迁移(同步)命令

注意:重点!重点!重点!

# python3 是python解释器名称
# 将对数据库的操作记录到项目中的migrations文件夹下的文件中,此时并没有同步到到数据库
python3 manage.py makemigrations
# 将对数据库的操作同步到MySQL中
python3 manage.py migrate
  • 一定要在对应的项目文件下执行这两条命令
  • 这两条命令一般情况下,是成对出现的,缺一不可
  • 在开发过程中,只要修改了models.py 中跟数据库相关的代码,就必须重新执行这两命令,以保证数据库中的记录跟models.py中一致


Django 表操作-增删改

在models.py文件中操作

1.增加表,增加对应的类即可

2.给表增加字段或修改字段,找到对应的类,调整类属性的参数即可,例

# 默认所有列都是非空,允许为空,null=True
book_price = models.IntegerField(null=True)
# 默认所有列没有默认值,增加默认值,default=默认值
press_addr = models.CharFiels(default='aaa')

3.删除表,将对应的类注释即可

以上操作,都要执行!!!处理完毕后,执行数据库迁移(同步)命令


Django 数据操作-查增删改

1.数据操作-查询

  • models.类名.objects.filter() 条件查询
# 当前类是Book类
# filter() 有返回值,是一个列表;没有参数(查询所有)或多个参数,参数之间关系对应SQL语句为:where 参数1=参数值1 and 参数2=参数值2 and …… and 参数n=参数值n
# res = models.Book.objects.filter(book_name='钢铁是怎样炼成的')
# select * from book where book_name='青年文摘' and book_price=1234;
res = models.Book.objects.filter(book_name='青年文摘', book_price=1234)
# 可通过索引取值但是索引不能为负数,不推荐使用索引取值,可使用first()
book_obj = res.first() # 取第一条记录

注意:filter方法如果没有获取到结果,不会报错,返回的是一个空列表

  • models.类名.objects.all() 查询所有
# 等同于 select * from book
# 返回值是一个列表,支持索引,但不支持负索引
res = models.Book.objects.all()

2.数据操作-增加

  • 类.objects.create()
# create() 有返回值,是当前被创建的对象本身
book_obj = Book.objects.create(book_name='Django入门', book_price=1234)
# 打印创建的对象, 对象的book_name 属性
print(book_obj, book_obj.book_name)
  • 创建对象,通过对象.save()
# 创建Book 对象
book_obj = Book(book_name='redis入门', book_price=4321)
# 通过对象.save()方法增加记录
book_obj.save()

3.数据操作-删除

'''
1.先查询出结果,
2.通过delete() 删除
'''
# sql语句:delete from book where b_id=2;
models.Book.objects.filter(b_id=2).delete()
# 由于filter() 的返回值是一个列表,这个方式相当于是批量删除,不建议删除记录

4.数据操作-修改

  • 批量更新(推荐使用该方法)
'''
1.先查询出结果
2.通过update() 更新
'''
# sql语句:update book set book_name='aa', book_price=2314 where b_id=3;
models.Book.objects.filter(b_id=3).update(book_name='aa',book_price=2314)
# 由于filter() 的返回值是一个列表,这个方式相当于是批量修改
  • 先获取数据对象,再修改对象属性,调用对象的绑定方法save()保存(了解即可,不推荐使用)
# 1.获取数据对象
book_obj = models.Book.objects.filter(b_id=3).first()
# 2.修改对象属性
book_obj.book_name = 'bb'
book_obj.book_price = 3124
# 3.调用对象的绑定方法 save
book_obj.save()

Django 链接MySQL及数据操作的更多相关文章

  1. Django链接MySQL,数据库迁移

    form表单默认是以get请求提交数据的 http://127.0.0.1:8000/login/?username=admin&password=123 action 1 不写,默认向当前地 ...

  2. 数据库 MySQL 之 数据操作

    数据库 MySQL 之 数据操作 一.MySQL数据类型介绍 MySQL支持多种类型,大致可以分为四类:数值.字符串类型.日期/时间和其他类型. ①二进制类型 bit[(M)] 二进制位(101001 ...

  3. ORACLE链接SQLSERVER数据库数据操作函数范例

    ORACLE链接SQLSERVER数据库数据操作函数范例 create or replace function FUN_NAME(LS_DJBH IN varchar2 ,LS_ITM varchar ...

  4. 搭建Django链接MySQL流程(python2版)

    之前生成选型python3,除了用的python3的pymysql模块之外其他的都是一样的. 1.首先搭建mysql(Mariadb)数据库(单点)         安装方式分为yum安装,rpm包安 ...

  5. Django—链接MySQL

    Djalgo基础配置方法 静态文件配置方法 1 所有的静态文件都放在 static 文件夹下,例如Bootstrap值类的第三方库,通常 static 文件下会创建 css image js 文件,用 ...

  6. MySQL 数据库 -- 数据操作

    数据的增删改 一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过 ...

  7. Django之mysql表单操作

    在Django之ORM模型中总结过django下mysql表的创建操作,接下来总结mysql表记录操作,包括表记录的增.删.改.查. 1. 添加表记录 class UserInfo(models.Mo ...

  8. mysql 写数据操作几次硬盘?

    mysql 写数据步骤: 1:写入操作事物日志,持久化操作日志到磁盘,并且只是写在磁盘上一小块区域内的顺序io,不需要像随机io一样 在磁盘多个地方移动磁头 2:内存中事物日志持久化以后  ,写入的数 ...

  9. mysql之数据操作

    一 介绍 MySQL数据操作: DML 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现 ...

随机推荐

  1. webpack详述

    一.利用package.json执行打包任务 首先使用npm init生成package.json文件:然后配置scripts如下: "scripts": { "buil ...

  2. vscode golang vue配置

    { "files.autoSave": "off", "window.title": "${dirty}${activeEdito ...

  3. Jquery FormData文件异步上传 快速指南

    网站中文件的异步上传是个比较麻烦的问题,不过现在通过jquery 可以很容易的解决这个问题: 使用jquery2.1版本,较老版本不支持异步文件上传功能: 表单代码: <form id=&quo ...

  4. H3C UDP封装

  5. 【t074】上学路线

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 你所在城市的街道好像一个棋盘,有a条南北方向的街道,和b条东西方向的街道. 南北方向的a条街道从西到东 ...

  6. [转]基于VS Code快速搭建Java项目

    有时候随手想写一点Java测试代码,以控制台程序为主,还会用到一些其它框架,并基于Maven构建. 1.Java Extension Pack一定要安装. 2.VS Code打开一个指定目录,创建相应 ...

  7. laravel的Eloquent关联关系

    1.简介: 1>Eloquent 关联关系以Eloquent模型类方法的形式被定义(是模型类的一个方法). 2>同 Eloquent 模型本身一样,关联关系也是强大的查询构建器,定义关联关 ...

  8. Redis - 命令行工具

    使用Redis内置的命令行工具 redis-cli一些便捷的命令: 1.执行单条命令 平时在访问 Redis 服务器,一般都会使用 redis-cli 进入交互模式,然后一问一答来读写服务器,这种情况 ...

  9. P1029 栈的基础操作

    题目描述 现在给你一个栈,它一开始是空的,你需要模拟栈的操作.栈的操作包括如下: "push x":将元素 x 放入栈中,其中x是一个int范围内的整数: "pop&qu ...

  10. liunx重定向控制台消息

    Linux 在控制台记录策略上允许一些灵活性, 它允许你发送消息到一个指定的虚拟控制台 (如果你的控制台使用的是文本屏幕). 缺省地, 这个"控制台"是当前虚拟终端. 为了选择 一 ...