前面介绍了Django平台的数据交互,这些数据都是在本地存放着,修改内容或者重新启动服务,数据就消失了,如果我们把数据存放在数据库中,不就保存了吗?

ORM

在写Django数据库之间,我们首先了解下什么是ORM,ORM就是对象关系映射,是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 (百度百科)

说这么多,不知道大家理解不理解,其实就是通过实例对象的方法帮助我们写sql语句从而方便我们。(其实就是通过你写的代码,然后帮你写SQL语句)

其实我们今天所写的Django的数据库其实就是通过ORM来实现的。

Django数据库

Django中自带的也有数据库(sqlite3),自带的轻量级数据库sqlite3,已经完全够了,当然大家都很数据Mysql数据库,我们也可以通过Django连接Mysql数据库

连接Mysql数据库

在文件settings,py文件下中找到以下配置信息,该信息为连接默认数据库(sqlite3)

# 连接数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

如果想要连接Mysql数据库,我们可以进行修改成以下参数

# 配置MYsql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test', # 数据库名称,
'HOST': 'localhost', # 主机地址
'USER': 'root', # 数据库用户
'PASSWORD': '', # 密码
'PORT': 3306 # mysql的端口默认3306
}
}

数据库已经连接成功了。但是还需要安装mysql插件mysqlclient

pip install mysqlclient

操作数据库

在文件models.py下创建表名以及表字段

# model.py

# 创建表名已经表字段
from django.db import models
# class名代表表名,models.Model固定写法
class User(models.Model):
# username,password 表示创建字段名,长度为32
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)

打开cmd,跳转到项目目录下执行以下命令,同步数据库

# 同步数据库
python manage.py makemigrations

这个时候会看到项目中的migrations中自动生成了一个文件 0001_initial.py, 这个时候我们继续执行命令

# 创建数据库表
python manage.py migrate

这个时候我们都已经把数据库全部创建完成了。

这个时候会创建一些Django自带的表,如果不需要的话我们可以在sttings.py文件中进行进行屏幕

INSTALLED_APPS = [
'django.contrib.admin', # admin管理后台站点
'django.contrib.auth', # 身份认证系统
'django.contrib.contenttypes', # 内容类型框架
'django.contrib.sessions', # 会话框架
'django.contrib.messages', # 消息框架
'django.contrib.staticfiles', # 静态文件管理框架
'Djtest', # 项目应用
]

migrations

创建好后数据库,你会发现Django项目中重新创建了一个文件migrations,里面的内容就是数据库的一些操作

注:

如果一不小心删除了migrations文件的数据,那么怎么办?

1、删除migrations下除了__int__.py的文件

2、重新执行同步数据库的命令

# 同步数据库
python manage.py makemigrations # 创建数据库
python manage.py migrate

添加数据到数据库

前面工作已经全部完成了,我们直接开始编写代码写入数据库中,这里还是使用上一篇数据交互的代码完成。我们直接在视图中进行修改代码

# views.py

def index(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 将数据保存到数据库
models.User.objects.create(username=username,password=password)   return render(request, 'index.html', {'data':username})

这个地方需要注意前面写的html接收的内容,然后再返回给用户浏览器,这里修改了index.html文件

# index.html
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>安静博客乐园</title>
</head>
<body>
<center>
<li>欢迎您,
<tbody>
<tr>
<td>{{data}}</td>
</tr>
</tbody>
</li>
</center>
</ul>
</body>
</html>

最后工作了,启动Django服务,进入到对应的地址,输入用户名和密码,点击提交

提交过后,来到我们的数据库中,进行查看,数据是否提交(我这里输入多次不同的数据)

可以发现数据已经全部都存到数据库中了。这样就可以把提交过的数据全部都保存在数据库中,然而不会重启服务器导致数据丢失了

其他数据库连接信息配置

# 连接 PostgreSQL
django.db.backends.postgresql
# 连接 mysql
django.db.backends.mysql
# 连接 sqlite
django.db.backends.sqlite3
# 连接 oracle
django.db.backends.oracle

Django---Django连接Mysql数据库的更多相关文章

  1. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

  2. Error loading MySQLdb module: No module named 'MySQLdb'----------- django成功连接mysql数据库的方法

    在进行django学习过程中,尝试使用框架连接mysql数据库,启动服务器的时候经常遇到Error loading MySQLdb module: No module named 'MySQLdb' ...

  3. 在Django中连接MySQL数据库(Python3)

    我的环境:      python3.6,      Django2.1.5,      MySQL8.0.15,      win10,      PyCharm, 要求:已经安装了MySQL数据库 ...

  4. Pycharm中的Django项目连接mysql数据库

    一.安装Pycharm和Django就不详细说了,自行百度 二.新建Django项目也不说了 三.配置Django连接到mysql 1.models.py写一个类,继承models.Model cla ...

  5. 基于Python3.6使用Django框架连接mysql数据库的驱动模块安装解决办法

    解决办法1 使用PyMySQL模块,直接使用pip install pymysql即可. 参考文章:https://www.cnblogs.com/wcwnina/p/8719482.html 原文内 ...

  6. django新建项目,连接mysql数据库

    安装django,进入Django目录,运行 python setup.py install 在workplace目录下新建一个名为site01的项目: cd workplacedjango-admi ...

  7. Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...

  8. 搭建django项目连接mysql数据库环境

    开通博客园这么久,即将写下第一篇博客,十分兴奋.首先了,庆祝自己写下了码农生涯博客园第一篇博客,其次了,庆祝自己经过了10个小时奋战,终于成功搭建django项目连接mysql数据库的环境.在此过程中 ...

  9. Django 连接mysql数据库中文乱码

    Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566   版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...

  10. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

随机推荐

  1. 龙良曲pytorch学习笔记_03

    import torch from torch import nn from torch.nn import functional as F from torch import optim impor ...

  2. ROS机器人话题之自定义消息

    ROS提供了丰富的内建消息,std_msgs包定义了一些基本的类型. 具体例子 首先定义一个消息类型的文件叫做Complex 例Complex.msg float32 real float32 ima ...

  3. 使用npm发布、查看、引用、删除自己的包[小白推荐]

    前言  怎么使用npm发布自己的组件包呢?博主看了不少相关的文章,都没有一个好的讲述.要么丢三落四,要么就是复杂到外行人根本看不懂,甚至无从下手.于是,在博主的潜心钻研下,终于成功了!所以,我打算写一 ...

  4. 《Android Studio实战 快速、高效地构建Android应用》--五、备忘录实验(1/2)

    通过开发App熟悉Android Studio的用法 开发一款用于管理备忘事项列表的App,核心功能: 创建.删除备忘 将某些备忘标记为重要(左侧带颜色标签突出显示) 涉及:操作栏菜单.上下文菜单.用 ...

  5. PTA 7-10 树的遍历(二叉树基础、层序遍历、STL初体验之queue)

    7-10 树的遍历(25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数 ...

  6. HDU 1005 Number Sequence(矩阵快速幂,快速幂模板)

    Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...

  7. 工业狗转行AI的心路历程

    2020年2月16日,晴 昨晚下了一场雪,大概是晚上八九点的样子,细碎的雪花在无风的夜里直嗖嗖的往下掉,门前的轿车顶上覆了薄薄的一层.路灯下的小巷格外的寂静,裹着我的睡衣在昏黄的灯光下站了许久,冠状病 ...

  8. 第2章 Java并行程序基础(三)

    2.8 程序中的幽灵:隐蔽的错误 2.8.1 无提示的错误案例 以求两个整数的平均值为例.请看下面代码: int v1 = 1073741827; int v2 = 1431655768; Syste ...

  9. 康拓展开 & 逆康拓展开 知识总结(树状数组优化)

    康拓展开 : 康拓展开,难道他是要飞翔吗?哈哈,当然不是了,康拓具体是哪位大叔,我也不清楚,重要的是 我们需要用到它后面的展开,提到展开,与数学相关的,肯定是一个式子或者一个数进行分解,即 展开. 到 ...

  10. postman之存储测试结果

    前言 在Jmeter的随笔中,我跟大家讲过利用Jmeter工具存储测试结果,那么,postman工具要该如何存储测试结果呢?下面一起来学习吧! 一:添加一个登录请求,填入接口参数点击send 二:点击 ...