django学习-10.django连接mysql数据库和创建数据表

时间:2021-07-08 19:47:45

1.django模型

Django对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

Django为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。

MySQL是Web应用中最常用的数据库。

这篇博客,我们将以Mysql作为实例进行介绍。

如果你想了解更多MySQL的基础知识,可以查看该菜鸟教程地址:https://www.runoob.com/mysql/mysql-tutorial.html

2.第三方库mysqlclient的安装

细节:python要操作mysql数据库,需要安装一个第三方库【mysqlclient】,该第三方库【mysqlclient】其实是一个mysql驱动。

2.1.第一步:使用命令【pip install mysqlclient 】,可以下载并安装最新版本的mysqlclient。

django学习-10.django连接mysql数据库和创建数据表

2.2.第二步:接着,使用命令【pip list】,可以查看mysqlclient目前版本号。

django学习-10.django连接mysql数据库和创建数据表

3.python操作mysql的完整步骤(假设这个django项目【helloworld】是全新项目,未创建过一个数据库)

3.1.第一步:我们要在本地mysql数据库创建一个新数据库,比如一个名为【hongjingsheng_project】的新数据库。

细节:

一、因为django自带的orm框架只能操作数据表,不能操作数据库,所以数据库需要我们自己在本地电脑手动用mysql命令行或者用navicate工具进行创建(我选择的是用navicate工具进行创建)。

django学习-10.django连接mysql数据库和创建数据表

django学习-10.django连接mysql数据库和创建数据表

 3.2.第二步:接着,我们查看django项目【helloworld】里的路径为【helloworld/helloworld/settings.py】这个py文件里的属性【DATABASES】的系统提供的默认数据。

django学习-10.django连接mysql数据库和创建数据表

细节:属性【DATABASES】的具体使用,可以查看django官方文档地址:https://docs.djangoproject.com/en/3.1/ref/settings/#databases

django学习-10.django连接mysql数据库和创建数据表

3.3.第三步:因为我们的django项目【helloworld】需要使用mysql数据库当成存储项目数据的数据库,所以我们接着要对django项目【helloworld】里的路径为【helloworld/helloworld/settings.py】这个py文件里的属性【DATABASES】值进行如下更改。

django学习-10.django连接mysql数据库和创建数据表

细节:

一、属性【DATABASES】的数据类型为字典,在属性【DATABASES】里的【DATABASES["default"]["ENGINE"]】,这个【ENGINE】含义是:连接数据库驱动的名称。名称有以下几种情况:

  • django.db.backends.postgresql   连接数据库PostgreSQL
  • django.db.backends.mysql        连接数据库mysql
  • django.db.backends.sqlite3      连接数据库sqlite
  • django.db.backends.oracle       连接数据库oracle

django学习-10.django连接mysql数据库和创建数据表

django学习-10.django连接mysql数据库和创建数据表

3.4.第四步:我们在django项目【helloworld】里,通过命令行新建一个应用【hello】(在之前博客里有提到这步骤怎么操作,该应用【hello】已创建过了,在这里就不需要重复创建了)。

3.5.第五步:我们将应用【hello】添加到 django项目【helloworld】里的路径【helloworld/helloworld/settings.py 】里的属性 INSTALLED_APPS中,也就是告诉django框架在django项目【helloworld】里有这么一个应用【hello】。(在之前博客里有提到这步骤怎么操作,该应用【hello】已被添加到属性 INSTALLED_APPS,在这里就不需要重复添加了)。

django学习-10.django连接mysql数据库和创建数据表

3.6.第六步:修改django项目【helloworld】里对应路径【helloworld/hello/models.py】的这个models.py里的代码内容。

django学习-10.django连接mysql数据库和创建数据表

细节:从上面截图可以看到,我们新建了一个子类Person,子类Person继承自父类models.Model, 这个子类Person有属性name(name表示姓名)和属性age(age表示年龄)。

这里用到了两种类:类CharField和类IntegerField,更多这种类的使用等后续相关博客里再编写。

注意事项:如果要实现创建多个数据表,可以在models.py里创建多个不同类名的类,具体操作可以看官方文档地址:https://docs.djangoproject.com/en/3.1/intro/tutorial02/

django学习-10.django连接mysql数据库和创建数据表

3.7.第七步:通过相关命令行,在一个指定的数据库里创建相关的表结构/表(备注:表结构其实也就是表,叫法不一样而已)。(在实际开发过程中,【3.7.第七步】这步骤可以忽略,但为了写完整的操作流程,这步也就大概写了一些主要操作内容。)

3.7.1.首先,在还没创建任何一个应用的表结构之前,我们可以看到django项目【helloworld】对应的路径【helloworld/hello/migrations】的该migrations文件夹里只有一个【__init__.py】。

3.7.2.接着,我们在路径【helloworld/】下,

3.7.2.1.首先,假设我们在【settings.py】该脚本文件里把【'ENGINE'】的值错误填写为【 'django.db.backends.'】,然后执行命令行【python manage.py migrate】。(【3.7.2.1】这部分内容只是为了教大家怎么按照报错日志去简单定位问题,可以忽略不看)

django学习-10.django连接mysql数据库和创建数据表

django学习-10.django连接mysql数据库和创建数据表

细节: 从上图报错信息,我们可以按照报错信息,去认真看下报错信息大概说了啥,可以按照报错信息去简单定位问题,也可以复制相关核心报错信息去百度查找答案。

3.7.2.2.接着,假设我们在【settings.py】该脚本文件里把【'ENGINE'】的值正确填写为【 'django.db.backends.mysql'】,然后第一次成功执行命令行【python manage.py migrate】。

django学习-10.django连接mysql数据库和创建数据表

django学习-10.django连接mysql数据库和创建数据表

细节:这些日志表示已经成功帮我们在指定数据库里生成相关的数据表了。

django学习-10.django连接mysql数据库和创建数据表

3.8.第八步:为了让django框架知道我们在具体哪个应用里的models.py里内容有一些变更,需要做接下来的操作。

我们现在以一个应用【hello】为数据来进行接下来的讲解。

3.8.1.首先,我们在路径【helloworld/】下,执行命令行【python manage.py makemigrations hello】。

细节:

一、要迁移一个指定应用名的数据表信息,命令行为【python manage.py makemigrations 应用名】。

二、这个命令行【python manage.py makemigrations hello】执行成功后会实现的功能是:只是会在这个【hello】应用里的唯一文件名为【migrations】的文件里生成相关迁移文件,这些迁移文件有涉及了哪些需要新增和修改的数据表信息,但还不会执行在指定数据库里生成相关数据表的操作!(这些迁移文件在【3.9】章节里提到的一个新命令成功执行后,就会执行在指定数据库里创建相关数据表的操作!)

三、要迁移一个指定django项目里的所有应用的数据表信息,比如迁移我们这个django项目【helloworld】里的所有应用的数据表信息,命令行为【python manage.py makemigrations】。

django学习-10.django连接mysql数据库和创建数据表

django学习-10.django连接mysql数据库和创建数据表

3.9.第九步:接着,为了让django框架知道我们要针对哪个应用进行数据表的新增和修改,需要做接下来的操作。

我们现在仍然以一个应用【hello】为数据来进行接下来的讲解。

3.9.1.首先,我们在路径【helloworld/】下,执行命令行【python manage.py migrate hello】。

细节:

一、要在指定数据库里创建一个指定应用名包含的最新的数据表信息,命令行为【python manage.py migrate 应用名】。

二、这个命令行【python manage.py migrate hello】执行成功后会实现的功能是:在指定数据库名为【hongjingsheng_project】的数据库里生成一个应用名为【hello】的应用包含的最新的数据表信息。)

三、要在指定数据库里生成一个指定django项目里的所有应用的数据表信息,比如生成我们这个django项目【helloworld】里的所有应用的数据表信息,命令行为【python manage.py migrate】。

django学习-10.django连接mysql数据库和创建数据表

django学习-10.django连接mysql数据库和创建数据表

细节:

一、生成的数据表的表名的取值规则为:应用名_类名(注意:类名的第一个大写字母会被转化为小写字母)(如:hello_person)。

二、尽管我们没有在【hello】应用里的models.py给person表设置主键,但是django框架会自动添加一个id作为person表的主键。

三、【python manage.py makemigrations】 和 【python manage.py makemigrations 应用名】和 【python manage.py migrate】和【python manage.py migrate 应用名】,这四个命令行的更具体使用和区别可以看下这位大牛写的博客地址:https://blog.csdn.net/hpu_yly_bj/article/details/78928089

三、对于我们而言,目前只要知道这四个命令行大概怎么使用即可,要深入学习的话只能多百度多总结多做笔记多去思考原理!

 

django学习-10.django连接mysql数据库和创建数据表的更多相关文章

  1. MySQL学习(一)——Java连接MySql数据库

    MySQL学习(一)——Java连接MySql数据库 API详解: 获得语句执行 String sql = "Insert into category(cid, cname) values( ...

  2. EF 连接MySQL 数据库  保存中文数据后乱码问题

    EF 连接MySQL 数据库  保存中文数据后乱码问题 采用Code First 生成的数据库,MySQL数据库中,生成的表的编码格式为***** 发现这个问题后,全部手动改成UTF8(图是另一个表的 ...

  3. php 连接mysql数据库并显示数据 实例 转载

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  4. &period;NET 5&sol;&period;NET Core使用EF Core 5连接MySQL数据库写入&sol;读取数据示例教程

    本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...

  5. mysql之创建数据库,创建数据表

    写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...

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

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

  7. java中用activiti插件连接mysql数据库,自动建表过程中,在配置mysql架包路径&OpenCurlyDoubleQuote;org&period;activiti&period;engine&period;ActivitiException&colon; couldn&&num;39&semi;t check if tables &OpenCurlyDoubleQuote;

    java中用activiti插件连接mysql数据库,出现错误: org.activiti.engine.ActivitiException: couldn't check if tables are ...

  8. robot framework学习笔记之七—连接mysql数据库

    1.安装Database-Library 输入命令:pip install robotframework_databaselibrary 2.添加Database的Library     3.实例 * ...

  9. IntelliJ IDEA2017 java连接mysql数据库并查询数据

    最近自己开始重新学习java基础了,做java开发不可避免要处理数据库,由于好久不写java了,对idea也有点陌生了.所以这里写篇用jdbc来连接mysql的文章 至于mysql怎么装,请自行百度  ...

随机推荐

  1. 故障重现&comma; JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  2. java统计汉字

    public class TotalUtil { public static int getSum(String text) {        String reg = "^[\u4e00- ...

  3. centos下yum搭建安装linux&plus;apache&plus;mysql&plus;php环境

    一.脚本YUM源安装: 1.yum install wget                                                     #安装下载工具wget 2.wge ...

  4. CentOS7&period;1搭建服务器篇(1)

    服务器搭建篇 1.镜像选择,CentOS 7.1 minmal.iso 2.yum install net-tools[提供ifconfig工具,我不习惯IP命令] 3.配置静态IP地址58.154. ...

  5. (转)Android学习进阶路线导航线路&lpar;Android源码分享&rpar;

     转载请注明出处:http://blog.csdn.net/qinjuning 前言:公司最近来了很多应届实习生,看着他们充满信心但略带稚气的脸庞上,想到了去年的自己,那是的我是不是也和 现在的他们一 ...

  6. UICollectionView reloadData后cell被隐藏

    在使用UICollectionView的页面执行: [self.collectionView reloadData]; 执行后,页面变为空白页,调试发现,执行reloadData 后UICollect ...

  7. Linux环境进程间通信&lpar;三&rpar;:消息队列

    linux下进程间通信的几种主要手段: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允 ...

  8. Factorials

    Factorials 阶乘 题目大意:给你一个数n,求出n ! 的最后一个非零位. 注释:n<=4200 想法:开始的想法是觉得这道题应该比较的有趣,因为我们知道,一个数的阶乘的最后的非零位后面 ...

  9. Django介绍、安装配置、基本使用、Django用户注册例子

    Django介绍     Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站     DjangoMTV的思想         没有controller ...

  10. sublime markdown 设置

    安装Markdown Preview 修改用户配置文件(代码高亮): { "enable_highlight": true } 快捷键: ctrl+b 生成html文档 安装Omn ...