声明:我是跟着Github项目学习的,这里的记录仅仅是帮助自己理解。
这篇文章的主要目的是利用Django连接MySQL数据库,并利用Django中自带的Web前端处理器对数据库进行简单增删改查操作,首先在进行实验之前请确保如下环境配置正确:Python3.5以上、MySQL安装正确。
首先我们在Python中先创建一个虚拟环境以便进行的操作不会影响到原始配置环境,创建虚拟环境的过程如下:
mkdir vote
python -m venv venv
,第一个venv是告诉Python我要创建一个虚拟环境啦,第二个是虚拟环境的名称(想取啥取啥喽)cd venv/Scripts
activate
激活虚拟环境,此时命令行前面应该有虚拟环境标志(venv) E:\pythoncode\
python -m pip install -U pip
,我输入pip install -U pip 会报错Fatal error in launcher: Unable to create process using '"'
查了后说是电脑里安装了多个Python环境的原因。。。emmm但是我电脑里貌似就一个python环境,如果你知道为啥的话给我留言呀~pip install django
django-admin startproject vote
最后是创建项目的名称,这里用的是votepython manage.py startapp vote_app
python manage.py runserver
可以出现以下界面:INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'vote_app',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'vote',
'HOST': '172.31.43.***',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '*****',
}
}
pip install pymysql
import pymysql
pymysql.install_as_MySQLdb()
python manage.py migrate
from django.db import models
# Create your models here.
class Subject(models.Model):
no = models.IntegerField(primary_key=True,db_column='sno',verbose_name='学科编号')
name = models.CharField(max_length=20,db_column='sname',verbose_name='学科名称')
intro = models.CharField(max_length=100,null=True,db_column='sintro',verbose_name='学科介绍')
create_date = models.DateField(db_column='create_date',verbose_name='成立日期')
is_hot = models.BooleanField(db_column='is_hot',verbose_name='是否热门')
emp_rate = models.DecimalField(max_digits=7,decimal_places=2,db_column='emp_rate',verbose_name='就业率')
def __str__(self):
return self.name
class Meta:
db_table = 'tb_subject'
verbose_name = '学科'
verbose_name_plural = '学科'
class Teacher(models.Model):
no = models.IntegerField(primary_key=True,db_column='tno',verbose_name='老师编号')
name = models.CharField(max_length=20,db_column='tname',verbose_name='姓名')
intro = models.CharField(max_length=100,null=True,db_column='tintro',verbose_name='自我介绍')
job_date = models.DateField(db_column='job_date',verbose_name='入职日期')
good_count = models.IntegerField(db_column='good_count',verbose_name='好评数')
bad_count = models.IntegerField(db_column='bad_count', verbose_name='差评数')
sub_no = models.ForeignKey(Subject,db_column='sub_no',on_delete=models.PROTECT,verbose_name='所属学科')
def __str__(self):
return self.name
class Meta:
db_table = 'tb_teacher'
verbose_name = '老师'
verbose_name_plural = '老师'
7.在命令行输入python manage.py makemigrations vote_app
生成迁移文件
8.命令行输入python manage.py migrate
执行迁移文件
如果这部分的操作都没有报错的话则恭喜你~连接MySQL的过程就圆满完成啦!
1.创建超级用户python manage.py createsuperuser
按提示依次输入即可
2.在vote_app应用内修改admin.py文件如下,注册模型。
from django.contrib import admin
from vote_app.models import Subject,Teacher
# Register your models here.
class SubjectAdmin(admin.ModelAdmin):
list_display = ('no','name','intro','create_date','is_hot','emp_rate')
ordering = ('no',)
class TeacherAdmin(admin.ModelAdmin):
list_display = ('no','name','intro','job_date','good_count','bad_count','sub_no')
ordering = ('sub_no','no',)
admin.site.register(Subject,SubjectAdmin)
admin.site.register(Teacher,TeacherAdmin)
3.在浏览器内输入(http://127.0.0.1:8000/admin/)后输入刚刚注册的用户名和密码进入如下界面:
至此,我们可以在该页面上对模型进行增删改查操作。