开发环境:

Windows 10

Python 3.7.4

Django 2.2.6

Mysql 8.0.17

承接上一节:https://www.cnblogs.com/daydayupup/p/11741873.html

数据库配置

Django默认使用sqlite3数据库,这是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中。由于Python本身内置了sqlite3,所以无需安装任何程序,就可以直接使用它。

如果要连接Mysql数据库的话,就要下载相应的数据库驱动模块,并且在seetings.py文件中做相应的修改。

首先,打开CMD,使用pip下载MySQL数据库驱动模块,我使用的是mysqlclient

pip  install mysqlclient

接着打开mysite/seeting.py文件,使用“Ctrl+F”组合键搜索“DATABASES”,默认情况下如图所示

配置MySQL数据库

注意:你需要预先创建一个数据库,Django不会自动帮你创建数据库。当然,如果使用的是sqlite3就不需要做任何预先配置。

接下来,搜索“INSTALLED_APPS”,在这里注册你的APP。

注册APP的作用是使你的APP能够被其他项目使用,或者可以打包和分发给其他人在他们的项目中使用。

上面的其他条目包含了在你的项目中会使用的所有Django应用,这些应用被默认开启是为了给常规项目带来方便。默认开启的某些应用需要至少一张数据表,所以,在使用他们之前需要在数据库中创建一些表:

py manage.py migrate

可以使用数据库命令行来列出Django所创建的表

创建模型

模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为。Django 遵循DRY Principle。它的目标是你只需要定义数据模型,然后其它的杂七杂八代码你都不用关心,它们会自动从模型生成。

Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作。

在polls/models中,新建两个模型,分别为Question和Chocie。Question包含一个问题和一个发布日期。Choice包含两个字段:该选项的文本描述和该选项的投票数。每一条Choice都关联到一个Question。这些都是由Python的类来体现,编写的全是Python的代码,不接触任何SQL语句。现在,编辑polls/models.py文件,具体代码如下:

#polls/models

from django.db import models

class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published') class Choice(models.Model):
question = models.ForeignKey(Question,on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
  • 在上述代码中,每个类都是django.db.models.Model的子类。
  • 每个字段都是Field类的实例,比如,字符字段被表示为CharField,日期时间字段表示为DateTimeField。这将告诉Django每个字段要处理的数据类型。
  • 每个Field类实例的变量的名字(如:question_text)也是字段的名字,因此,变量命名要符合数据库命名的格式。
  • 定义某些Field类实例需要参数,如 question_text 需要一个 max_length 参数。这个参数的用处不止用来定义数据库结构,也用于数据验证。
  • Field类实例也可以接受多个可选参数,如 defaul=0 就是一个可选参数。
  • 注意在最后,我们使用ForeignKey定义了一个关系。这将告诉 Django,每个Choice对象都关联到一个Question对象。Django支持所有常用的数据库关系:多对一、多对多和一对一。

激活模型

py manage.py makemigrations polls

接着,你会看到如下输出

通过运行 makemigrations 命令,Django会检测你对模型文件的修改,也就是告诉Django模型发生改变,并且把这次改动保存为一次迁移(migration)。

迁移(migration)是Django对于模型定义(也就是数据库结构)的变化的存储形式。说白了,迁移就是存储你对模型修改的行为的记录文件

我们可以在polls/migrations/0001_initial.py中查看我们刚刚记录的迁移数据,它也可以被手动修改。

数据迁移

接着,我们使用migrate命令对数据库进行真正的数据迁移:

py manage.py migrate

这个migrate命令选中所有还未执行过的迁移(migration)(Django 通过在数据库中创建一个特殊的表 django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。

数据迁移被分解成生成和应用两个命令是为了让你能够在代码控制系统上提交迁移数据并使其能在多个应用里使用;这不仅仅会让开发更加简单,也给别的开发者和生产环境中的使用带来方便。

使用mysql命令检查test1的数据库表,如下图所示:

这说明数据迁移成功!

从中也可看出数据库表的命名方式是 APP名字_models中定义的类名 。

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. Mybatis学习---连接MySQL数据库

    [目录]

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

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

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

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

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

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

随机推荐

  1. Caché,Cache数据库连接并查询数据

    1.Caché数据库安装好后,在开始菜单中启动 2.打开管理中心,地址为:http://localhost:57772/csp/sys/UtilHome.csp ,输入用户密码,登录 3.要对表数据进 ...

  2. Linux 系统中用Systemd 管理系统服务

    Systemd  命令详解: https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-syste ...

  3. golang web框架设计7:整合框架

    把前面写好的路由器,控制器,日志,都整合在一起 全局变量和初始化 定义一些框架的全局变量 var ( BeeApp *App AppName string AppPath string StaticD ...

  4. flask不得不知的基础

    python与flask不得不说的小秘密 常识引入 什么是装饰器? 在不改变源码的前提下,对函数之前前后进行功能定制. 开放封闭原则:不改变函数内部代码,在函数外部进行修改. 基本写法 import ...

  5. jq append添加的元素click获取不到的解决方法

    移动端手机ios网页,apppend添加html class名用 on()方法没效果 解决方案:在html里面给需要点击的元素加一个onclick="javascript:void(0)&q ...

  6. 01.02 linux命令(1

    =================常用的Linux命令============================Ls 查看当前文件夹下或者其他文件夹的文件列表或者文件夹列表Ls  -l 详细信息的列表L ...

  7. 如何下载spring sts

    1.打开https://spring.io/ 2.翻到页面最底部点击tools 3.页面下滑点击Download STS4 Windows 64-bit

  8. java 访问数据库公共类

    package com.javaweb.mvc; import java.sql.*; /** * @author 公共数据访问类 * * Statement 和 PreparedStatement之 ...

  9. HashMap集合-遍历方法

    # HashMap集合-遍历方法 先定义好集合: public static void main(String[] args) { Map<String,String> onemap=ne ...

  10. java-监听器(Listener)

    监听器:用于监听web应用中某些对象.信息的创建.销毁等动作,服务器会自动调用相应的方法进行处理.常用于统计在线人数,初始化系统参数等. Javaweb监听器主要监听对象有ServletContext ...