返回顶部
首页 > 资讯 > 数据库 >django+mysql如何使用
  • 723
分享到

django+mysql如何使用

2024-04-02 19:04:59 723人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Django+Mysql如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。DjanGo中每一个模型model都对应于数据库中的一张表,每个

这篇文章将为大家详细讲解有关Django+Mysql如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

DjanGo中每一个模型model都对应于数据库中的一张表,每个模型中的字段都对应于数据库表的列。方便的是,django可以自动生成这些create table, alter table, drop table的操作。其次Django为咱们也提供了后台管理模块(Django-Admin),主要功能是通过后台管理来实现客户端的功能,可以对数据进行增删改查。也可以通过该功能进行二次开发

Django中的mysql配置 

    在上期内容,我们了解了settings.py配置信息的内容,其中DATABASES是用来管理数据库配置的,默认是sqlite3数据库,所以我们需要将其修改成mysql数据库。

# Database
https://docs.djangoproject.com/en/2.0/ref/settings/#databases

# 数据库配置 默认的数据库为sqlite
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
        'NAME': 'django_mysql', # 数据库名
        'USER': 'root', # 账号
        'PASSWord': 'root', # 密码
        'HOST': '127.0.0.1', # HOST
        'POST': 3306, # 端口

    }
}

字段名称代码中都添加了相应说明,ENGINE为MYSQL数据库引擎,这个当然不会凭空出现,需要我们去安装

安装pymysql

pip3 install pymysql

项目中配置

在最开始的项目包下的__init__.py中进行如下配置

"""
setting中的配置默认为sqlite3数据库 当需要修改成MySql时
并且在setting.py的同级目录的__init__.py 加入如下配置
否则会报错: Error loading MySQLdb module.
"""
import pymysql
pymysql.install_as_MySQLdb()

如果mysql配置信息错误(用户名、密码、host等)控制台会报如下异常

pymysql.err.OperationalError: (1045, "Access denied for user 'ROOT'@'localhost' (using password: YES)")

在app文件的models.py文件中 创建Student(学生信息)和StudentUNIOn(社团信息)

models.py:数据模块,用于数据库设计

"""
创建学生信息表模型
"""
from django.db import models

"""
 该类是用来生成数据库的 必须要继承models.Model
"""
class Student(models.Model):
    """
    创建如下几个表的字段
    """
    # 学号 primary_key=True: 该字段为主键
    studentNum = models.CharField('学号', primary_key=True, max_length=15)
    # 姓名 字符串 最大长度20
    name = models.CharField('姓名', max_length=20)
    # 年龄 整数 null=False, 表示该字段不能为空
    age = models.IntegerField('年龄', null=False)
    # 性别 布尔类型 默认True: 男生 False:女生
    sex = models.BooleanField('性别', default=True)
    # 手机 unique=True 该字段唯一
    mobile = models.CharField('手机', unique=True, max_length=15)
    # 创建时间 auto_now_add:只有在新增的时候才会生效
    createTime = models.DateTimeField(auto_now_add=True)
    # 修改时间 auto_now: 添加和修改都会改变时间
    modifyTime = models.DateTimeField(auto_now=True)

    # 指定表名 不指定默认APP名字——类名(app_demo_Student)
    class Meta:
        db_table = 'student'


"""
学生社团信息表
"""
class studentUnion(models.Model):
    # 自增主键, 这里不能设置default属性,负责执行save的时候就不会新增而是修改元素
    id = models.IntegerField(primary_key=True)
    # 社团名称
    unionName = models.CharField('社团名称', max_length=20)
    # 社团人数
    unionNum = models.IntegerField('人数', default=0)
    # 社团负责人 关联Student的主键 即studentNum学号 一对一的关系,on__delete 属性在django2.0之后为必填属性后面会介绍
    unionRoot = models.OneToOneField(Student, on_delete=None)

    class Meta:
        db_table = 'student_union'


"""
OneToOneField: 一对一
ForeignKey: 一对多
ManyToManyField: 多对多(没有ondelete 属性)
"""

在利用models.py文件生成数据库表之前,我们需要手动的先创建数据库:

mysql> create database django_mysql;
Query OK, 1 row affected (0.01 sec)

创建完django_msql库之后,我们在终端执行如下命令,他的作用是将models文件生成一个迁移文件

 python3 manage.py makemigrations

django+mysql如何使用

迁移文件生成完毕,执行

python3 manage.py migrate

会将迁移文件的内容作用到数据库中,生成表或者修改字段属性

控制台输出如下,则表示执行成功

(django_venv) xxxxxdeair:djangoDemo xxxxx$ Python3 manage.py migrate
Operations to perfORM:
  Apply all migrations: admin, app_demo, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying app_demo.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

 查看我们的django_mysql数据库,其中student和student_union就是用models文件生成的表,其他的表是项目自动生成的,暂时可以先不用管

mysql> use django_mysql
Database changed

mysql> show tables;
+----------------------------+
| Tables_in_django_mysql     |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| student                    |
| student_union              |
+----------------------------+
12 rows in set (0.00 sec)

表结构

desc查看表结构

mysql> desc student;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| studentNum | varchar(15) | NO   | PRI | NULL    |       |
| name       | varchar(20) | NO   |     | NULL    |       |
| age        | int(11)     | NO   |     | NULL    |       |
| sex        | tinyint(1)  | NO   |     | NULL    |       |
| mobile     | varchar(15) | NO   | UNI | NULL    |       |
| createTime | datetime(6) | NO   |     | NULL    |       |
| modifyTime | datetime(6) | NO   |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
mysql> desc student_union;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id           | int(11)     | NO   | PRI | NULL    |       |
| unionName    | varchar(20) | NO   |     | NULL    |       |
| unionNum     | int(11)     | NO   |     | NULL    |       |
| unionRoot_id | varchar(15) | NO   | UNI | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

至此Django利用models文件创建数据库表的功能已经完毕。接下来用代码的方式演示一下Django如何进行增删改查

增加数据

为了提供一些测试数据,这里用for循环批量的加了几条简单的数据。

from app_demo.models import Student
import random
"""
插入测试数据
"""
def insert(request):
    # 随机整数 作为学号
    for i in range(0, 5):
        studentNum = int(random.uniform(0, 1) * 10000000000)
        # 从models文件中获取student对象
        student = Student()
        # 给对象赋值
        student.studentNum = studentNum
        student.name = 'tom' + str(i)
        student.age = 15
        student.sex = random.choice([True, False])
        student.mobile = int(random.uniform(0, 1) * 10000000000)
        # 插入数据
        student.save()

    return HttpResponse('数据插入完毕')

urls.py 文件中 urlpatterns中配置

url(r'^insert/', views.insert)

浏览器中访问http://localhost:8000/insert/ 浏览器显示‘数据插入完毕’

查询数据库,发现有5天数据,也就是插入成功

mysql> select * from student;
+------------+------+-----+-----+------------+----------------------------+----------------------------+
| studentNum | name | age | sex | mobile     | createTime                 | modifyTime                 |
+------------+------+-----+-----+------------+----------------------------+----------------------------+
| 1352687635 | tom2 |  15 |   1 | 941807449  | 2018-11-08 09:58:40.226856 | 2018-11-08 09:58:40.227002 |
| 5554311867 | tom0 |  15 |   0 | 1598619027 | 2018-11-08 09:58:40.203807 | 2018-11-08 09:58:40.203960 |
| 7302510986 | tom4 |  15 |   0 | 9602601619 | 2018-11-08 09:58:40.251479 | 2018-11-08 09:58:40.251682 |
| 847849420  | tom3 |  15 |   0 | 195276039  | 2018-11-08 09:58:40.238601 | 2018-11-08 09:58:40.238928 |
| 9962892430 | tom1 |  15 |   0 | 3265013828 | 2018-11-08 09:58:40.215488 | 2018-11-08 09:58:40.216106 |
+------------+------+-----+-----+------------+----------------------------+----------------------------+
5 rows in set (0.00 sec)

查询数据

"""
查询
"""
def find(request):
    #sql = 'select * from student'
    # django 也可以执行原生的sql语句
    #result = Student.objects.raw(sql)

    # 查询name = tom1的数据
    result = Student.objects.filter(name='tom1')
    """
    result为<class 'django.db.models.query.QuerySet'>的对象
    需要进行数据处理
    """
    arr = []
    for i in result:
        content = {'学号': i.studentNum, '姓名': i.name, '性别': i.sex}
        arr.append(content)
    print(arr)
    print(type(arr))
    return HttpResponse(arr)

配置urls,浏览器访问localhost:8000/find/ 

django+mysql如何使用

修改数据

"""
修改
"""
def modify(request, studentNum):
    # 通过学号获取student对象
    student = Student.objects.get(studentNum=studentNum)
    # 设置student的name为jack
    student.name = 'jack'
    student.save()
    return HttpResponse('修改成功.')

setting文件中的配置如下

 url(r'^modify/(?P<studentNum>\d+)', views.modify),

修改学号847849420的name为jack

django+mysql如何使用

再次查询mysql数据库,发现name已经被更新成了jack

mysql> select * from student where studentNum='847849420';
+------------+------+-----+-----+-----------+----------------------------+----------------------------+
| studentNum | name | age | sex | mobile    | createTime                 | modifyTime                 |
+------------+------+-----+-----+-----------+----------------------------+----------------------------+
| 847849420  | jack |  15 |   0 | 195276039 | 2018-11-08 09:58:40.238601 | 2018-11-08 10:22:46.403147 |
+------------+------+-----+-----+-----------+----------------------------+----------------------------+
1 row in set (0.00 sec)

删除数据

"""
删除
"""
def delete(request, studentNum):
    student = Student.objects.get(studentNum=studentNum)
    student.delete()
    return HttpResponse('删除成功.')

settings.py中urlpatterns的配置如下

url(r'^delete/(?P<studentNum>.+)', views.delete)

.+ 表示匹配多个字符(不包括换行等字符)

浏览器请求该视图

django+mysql如何使用

查询数据库,发现该数据已经被删除

mysql> select * from student where studentNum='847849420';
Empty set (0.01 sec

关于“django+mysql如何使用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: django+mysql如何使用

本文链接: https://lsjlt.com/news/62772.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • django+mysql如何使用
    这篇文章将为大家详细讲解有关django+mysql如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Django中每一个模型model都对应于数据库中的一张表,每个...
    99+
    2024-04-02
  • django+mysql的使用
    Django中每一个模型model都对应于数据库中的一张表,每个模型中的字段都对应于数据库表的列。方便的是,django可以自动生成这些create table, alter table, drop table的操作。其次Dj...
    99+
    2023-01-30
    django mysql
  • Django中Ajax如何使用
    这篇文章将为大家详细讲解有关Django中Ajax如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、ajax发送简单数据类型:html代码:在这里我...
    99+
    2024-04-02
  • Django定时任务Django crontab如何使用
    这篇文章主要介绍“Django定时任务Django-crontab如何使用”,在日常操作中,相信很多人在Django定时任务Django-crontab如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”D...
    99+
    2023-07-02
  • django如何连接mysql
    要连接MySQL数据库,首先需要安装MySQL驱动程序。在Django中,可以使用`mysqlclient`或`PyMySQL`两个...
    99+
    2023-10-09
    django mysql
  • 如何在Django中使用Ajax
    这篇文章给大家介绍如何在Django中使用Ajax,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、ajax发送简单数据类型:html代码:在这里我们仅发送一个简单的字符串views.py #coding:u...
    99+
    2023-06-08
  • django如何通过virtualenv使用
    这篇文章给大家分享的是有关django如何通过virtualenv使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在我们使用 virtualenv时,可以对多个python环境同时操作,这就省去了很多不必要的创...
    99+
    2023-06-14
  • 如何在Django中使用ElasticSearch
    这篇文章主要介绍了如何在Django中使用ElasticSearch的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何在Django中使用ElasticSearch文章都会有所收获,下面我们一起来看看吧。什么是...
    99+
    2023-06-26
  • 如何在Django中使用API?
    好的,以下是文章内容: Django是一个流行的Python Web框架,它提供了许多内置的功能和库,使得开发Web应用变得更加容易。其中一个内置的功能是Django的REST框架,它让我们能够轻松地创建和使用API。 本文将会介绍如何在D...
    99+
    2023-06-29
    编程算法 django api
  • Django如何使用jinja2模板
    这篇“Django如何使用jinja2模板”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Django如何使用jinja2模板...
    99+
    2023-07-05
  • Django ORM中,如何使用Coun
    示例models 解决方法 有时候,我们想要获取一个对象关联关系的数量,但是我们不要所有的关联对象,我们只想要符合规则的那些关联对象的数量。 示例models # models.py from django.db im...
    99+
    2023-01-31
    如何使用 Django ORM
  • Django中如何使用Channels功能
    目录一、什么是WebSocket二、什么是Channels三、Django中使用Channel四、前端Websocket使用五、测试Channels功能      前言:最近后台写游...
    99+
    2024-04-02
  • Django中如何使用 Form组件
    Django中如何使用 Form组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。为什么需要Form组件注:Form组件,只适用于,前后端...
    99+
    2024-04-02
  • python中如何使用Django框架
    这篇文章将为大家详细讲解有关python中如何使用Django框架,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。第一步:项目的创建与运行第一次使用 Django ,那么你必须要照顾一些初始设...
    99+
    2023-06-20
  • Django数据库SQlite如何使用
    这篇文章主要介绍“Django数据库SQlite如何使用”,在日常操作中,相信很多人在Django数据库SQlite如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Django数据库SQlite如何使用...
    99+
    2023-07-02
  • django验证系统如何使用
    这篇文章主要介绍了django验证系统如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇django验证系统如何使用文章都会有所收获,下面我们一起来看看吧。user对象用户对象是认证系统的核心。django...
    99+
    2023-07-05
  • Bash中如何使用Django缓存?
    在Django应用程序中,缓存是一种非常重要的机制,它可以帮助我们减少数据库查询的次数,从而提高应用程序的性能。在这篇文章中,我们将探讨如何在Bash中使用Django缓存。 安装Django 在开始之前,我们需要先安装Django。...
    99+
    2023-10-26
    django bash 缓存
  • Django中如何使用django-celery完成异步任务
    这期内容当中小编将会给大家带来有关Django中如何使用django-celery完成异步任务 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Django中如何使用django-celery完成异步任务&...
    99+
    2023-06-04
  • django中使用mysql的事务
    事务简介   在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。  事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。  事务用来管理 insert,update...
    99+
    2019-06-17
    django中使用mysql的事务 数据库入门 数据库基础教程
  • django框架使用mysql步骤
    在创建好django项目的基础上来讲解使用orm框架 注意:首先在mysql中手动或者通过命令创建一个数据库,我先创建一个名为orm的数据库。 1:在项目文件夹中的settings.py文件中配置mysql数据库链接字符串及时区配置 #...
    99+
    2023-01-30
    框架 步骤 django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作