pythondjangomysql_django+mysql的使⽤⽰例
Django中每⼀个模型model都对应于数据库中的⼀张表,每个模型中的字段都对应于数据库表的列。⽅便的是,django可以⾃动⽣成这些create table, alter table, drop table的操作。其次Django为咱们也提供了后台管理模块(Django-Admin),主要功能是通过后台管理来实现客户端的功能,可以对数据进⾏增删改查。也可以通过该功能进⾏⼆次开发
Django中的mysql配置
在上期内容,我们了解了settings.py配置信息的内容,其中DATABASES是⽤来管理数据库配置的,默认是sqlite3数据库,所以我们需要将其修改成mysql数据库。
# Database
# 数据库配置 默认的数据库为sqlite
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.sql', # 数据库引擎
mediaplayer播放器下载
'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等)控制台会报如下异常
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'
"""
学⽣社团信息表
"""propertyholding
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 属性)
"""
java设计模式一共多少种在利⽤models.py⽂件⽣成数据库表之前,我们需要⼿动的先创建数据库:
mysql> create database django_mysql;
Query OK, 1 row affected (0.01 sec)
创建完django_msql库之后,我们在终端执⾏如下命令,他的作⽤是将models⽂件⽣成⼀个迁移⽂件
python3 manage.py makemigrations
迁移⽂件⽣成完毕,执⾏
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. OK
Applying auth. OK
Applying admin. OK
Applying admin.0002_logentry_remove_ OK
Applying admin.0003_logentry_add_action_ OK
Applying app_demo. OK
Applying contenttypes.0002_remove_content_ OK
Applying auth.0002_alter_permission_name_ OK
Applying auth.0003_alter_user_email_ OK
Applying auth.0004_alter_user_ OK
Applying auth.0005_alter_user_last_ OK
Applying auth.0006_require_ OK
Applying auth.0007_alter_validators_add_ OK
Applying auth.0008_alter_user_username_ OK
Applying auth.0009_alter_user_last_name_ OK手机mysql安装配置教程
Applying sessions. 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 |java语言环境配置
| 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 dels import Student
import random
"""
插⼊测试数据

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。