如何通过Django框架连接并操作MySQL数据库?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1230个文字,预计阅读时间需要5分钟。
1. 明确说明:1、基于DjangoTest项目练习
2.已安装MySQL驱动:已安装MySQL驱动,未安装可执行安装命令:pip install pymysql
3.已在Navicat手动创建数据库order_test(由Django自带的ORM是data_first类型)
1、基于DjangoTest项目演练
2、已经安装了mysql驱动,若未安装可以执行安装命令:pip install pymysql
3、已在navicat手动创建了数据库order_test(由于Django自带的orm是data_first类型的ORM,使用前必须先创建数据库)
4、其他说明
Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架,到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:
- 创建数据库,设计表结构和字段
- 使用 MySQLdb 来连接数据库,并编写数据访问层代码
- 业务逻辑层去调用数据访问层执行数据库操作
ORM:Object Relational Mapping(关系对象映射)
类名对应------》数据库中的表名
类属性对应---------》数据库里的字段
类实例对应---------》数据库表里的一行数据
二、修改setting.py在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为如下:
DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', #'NAME': BASE_DIR / 'db.sqlite3', #修改DATABASES 配置项 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'order_test', # 数据库名称 'HOST': '12.18.20.42', # 数据库地址,本机 ip 地址 127.0.0.1 'PORT': 13306, # 端口 'USER': 'doud', # 数据库用户名 'PASSWORD': 'cNiryBWa', # 数据库密码 } }
三、修改__init__.py告诉 Django 使用 pymysql 模块连接 mysql 数据库,设置 Django默认连接MySQL的方式
# 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置 import pymysql pymysql.install_as_MySQLdb()
四、定义模型 1、创建APPDjango 规定,如果要使用模型,必须要创建一个 app。我们使用以下命令创建一个 TestModel 的 app
django-admin startapp TestModel 2、修改 TestModel/models.py 文件,创建表
类名Test代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。
注:说通俗点,就是name字段是创建表时要定义的字段
from django.db import models # Create your models here. class Test(models.Model): name = models.CharField(max_length=20)
3、修改DjangoTest/settings.py在 settings.py 中找到INSTALLED_APPS这一项,修改如下,即注册APP:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', #添加此项 ]
4、执行创建表结构的命令只要模型文件models.py进行了内容的更新,我们都会使用python manage.py makemigrations 和 python manage.py migrate这两个命令
1)python manage.py makemigrations TestModel当我们第一次在models.py文件新建model类(一个类对应数据库中的一张数据表)时,执行python manage.py makemigrations 命令之后,应用目录下的migations的文件下多了一个001的文件。文件内容记录了我们刚才在medels.py文件的操作
2)python manage.py migrate TestModel执行了第1步的命令后,数据库里是没有TestMode_test模型的表的,此时要再执行python manage.py migrate,刷新数据库可以看到新建好的数据表,数据表中字段也出现了
下图是表结构,表名组成结构为:应用名_类名(如:TestModel_test)
注意:尽管我们没有在 models 给表设置主键,但是 Django 会自动添加一个 id 作为主键。
3)问题:两个命令的关系?可以只执行其中一个命令吗?答案:首先,第一个命令的作用是记录即将要做的数据库操作,但实际上并没有进行数据库操作。第二个的命令的作用是对数据库进行操作(建表、改表等)
综上:python manage.py makemigrations命令记录对models文件的修改。python manage.py migrate命令在数据库中创建表和数据
五、数据库操作 1、编辑TestModel/tests.py直接用现有的tests.py文件实战演练就行了,懒得再创建多1个文件。
tests.py源码如下,包含:1)添加数据:需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT;2)获取数据
from django.test import TestCase # Create your tests here. # -*- coding: utf-8 -*- from django.127.0.0.1:8000/111/
如下图,访问后返回数据添加成功,此时数据库表会insert一条数据
2)访问获取数据的地址127.0.0.1:8000/112/以上便讲述完成如何使用mysql数据库,至于更新或删除数据,可参考www.runoob.com/django/django-model.html,这里不再演示了
本文共计1230个文字,预计阅读时间需要5分钟。
1. 明确说明:1、基于DjangoTest项目练习
2.已安装MySQL驱动:已安装MySQL驱动,未安装可执行安装命令:pip install pymysql
3.已在Navicat手动创建数据库order_test(由Django自带的ORM是data_first类型)
1、基于DjangoTest项目演练
2、已经安装了mysql驱动,若未安装可以执行安装命令:pip install pymysql
3、已在navicat手动创建了数据库order_test(由于Django自带的orm是data_first类型的ORM,使用前必须先创建数据库)
4、其他说明
Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架,到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:
- 创建数据库,设计表结构和字段
- 使用 MySQLdb 来连接数据库,并编写数据访问层代码
- 业务逻辑层去调用数据访问层执行数据库操作
ORM:Object Relational Mapping(关系对象映射)
类名对应------》数据库中的表名
类属性对应---------》数据库里的字段
类实例对应---------》数据库表里的一行数据
二、修改setting.py在项目的 settings.py 文件中找到 DATABASES 配置项,将其信息修改为如下:
DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', #'NAME': BASE_DIR / 'db.sqlite3', #修改DATABASES 配置项 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'order_test', # 数据库名称 'HOST': '12.18.20.42', # 数据库地址,本机 ip 地址 127.0.0.1 'PORT': 13306, # 端口 'USER': 'doud', # 数据库用户名 'PASSWORD': 'cNiryBWa', # 数据库密码 } }
三、修改__init__.py告诉 Django 使用 pymysql 模块连接 mysql 数据库,设置 Django默认连接MySQL的方式
# 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置 import pymysql pymysql.install_as_MySQLdb()
四、定义模型 1、创建APPDjango 规定,如果要使用模型,必须要创建一个 app。我们使用以下命令创建一个 TestModel 的 app
django-admin startapp TestModel 2、修改 TestModel/models.py 文件,创建表
类名Test代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。
注:说通俗点,就是name字段是创建表时要定义的字段
from django.db import models # Create your models here. class Test(models.Model): name = models.CharField(max_length=20)
3、修改DjangoTest/settings.py在 settings.py 中找到INSTALLED_APPS这一项,修改如下,即注册APP:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'TestModel', #添加此项 ]
4、执行创建表结构的命令只要模型文件models.py进行了内容的更新,我们都会使用python manage.py makemigrations 和 python manage.py migrate这两个命令
1)python manage.py makemigrations TestModel当我们第一次在models.py文件新建model类(一个类对应数据库中的一张数据表)时,执行python manage.py makemigrations 命令之后,应用目录下的migations的文件下多了一个001的文件。文件内容记录了我们刚才在medels.py文件的操作
2)python manage.py migrate TestModel执行了第1步的命令后,数据库里是没有TestMode_test模型的表的,此时要再执行python manage.py migrate,刷新数据库可以看到新建好的数据表,数据表中字段也出现了
下图是表结构,表名组成结构为:应用名_类名(如:TestModel_test)
注意:尽管我们没有在 models 给表设置主键,但是 Django 会自动添加一个 id 作为主键。
3)问题:两个命令的关系?可以只执行其中一个命令吗?答案:首先,第一个命令的作用是记录即将要做的数据库操作,但实际上并没有进行数据库操作。第二个的命令的作用是对数据库进行操作(建表、改表等)
综上:python manage.py makemigrations命令记录对models文件的修改。python manage.py migrate命令在数据库中创建表和数据
五、数据库操作 1、编辑TestModel/tests.py直接用现有的tests.py文件实战演练就行了,懒得再创建多1个文件。
tests.py源码如下,包含:1)添加数据:需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT;2)获取数据
from django.test import TestCase # Create your tests here. # -*- coding: utf-8 -*- from django.127.0.0.1:8000/111/
如下图,访问后返回数据添加成功,此时数据库表会insert一条数据
2)访问获取数据的地址127.0.0.1:8000/112/以上便讲述完成如何使用mysql数据库,至于更新或删除数据,可参考www.runoob.com/django/django-model.html,这里不再演示了

