Python+Django+MySQL实现基于Web版的增删改查的⽰例代码
前⾔
本篇使⽤Python Web框架Django连接和操作MySQL数据库学⽣信息管理系统(SMS),主要包含对学⽣信息增删改查功能,旨在快速⼊门Python Web,少⾛弯路。效果演⽰在项⽬实战最后⼀节,⽂章结尾有整个项⽬的源码地址。
开发环境
开发⼯具:Pycharm 2020.1
开发语⾔:Python 3.8.0
直角三角形函数公式表格
Web框架:Django 3.0.6
数据库:MySQL5.7
操作系统:Windows 10
项⽬实战
1. 创建项⽬
File->New Project->Django
稍等⽚刻,项⽬的⽬录结构如下图
项⽬创建后确认是否已安装Django和mysqlclient解释器,如何确认?file->Settings
如果没有请在Terminal终端输⼊以下命令完成安装
pip install django
pip install mysqlclient
如果在执⾏pip install 报错Read time out请设置延长下超时时间,默认15s,⽹络不好情况下很易超时pip --default-timeout=180 install -U django
pip --default-timeout=180 install -U mysqlclient
参数-U是--upgrade简写,把安装的包升级到最新版本
2. 创建应⽤
打开Pycharm的Terminal终端,输⼊以下命令创建sims应⽤matlab中要求位置同列其余元素为0
python manage.py startapp sims
应⽤创建后要在项⽬的settings.py⽂件⾥的INSTALLED_APPS下⾯添加smis完成应⽤注册
3.配置MySQL数据库
在本地MySQL创建sms数据库,修改项⽬的settings连接信息由默认的sqlite修改为MySQL
DATABASES = {
'default': {
'ENGINE': 'django.sql',
'NAME': 'sms',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': 3306
}
}powder bed翻译
测试连接,依次点击Pycharm右上⾓的Database->+->Data Source->MySQL
下载连接驱动和配置数据库连接信息
点击Test Connection测试连接,连接通过点击OK出现如下的结构信息表⽰连接本地MySQL成功
4.数据模型创建(M)
类比在应⽤sims下models.py添加Student模型
class Student(models.Model):
student_no = models.CharField(max_length=32, unique=True)
student_name = models.CharField(max_length=32)
5.数据模型迁移
Terminal终端输⼊以下两条命令,其作⽤第⼀条⽣成⽂件记录模型的变化;第⼆条是将模型变化同步⾄数据库,我们可以在数据库⽣成对应的表结构。
python manage.py makemigrations sims
python manage.py migrate sims
⽣成数据表结构如下所⽰
6.路由配置
本质可以理解请求路径url和处理⽅法的映射配置,⾸先在项⽬sms的urls.py⽂件中添加sims的路由配置
ib import admin
from django.urls import path
f.urls import url, include
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^sims/', include('sims.urls'))
]
然后在sims添加⼀个名为urls.py的⽂件,添加路由配置如下
# coding=utf-8
f.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index),
url(r'^add/$', views.add),
url(r'^edit/$', views.edit),
url(r'^delete/$', views.delete)
]
7.处理函数添加(V)
在应⽤sims的视图层⽂件views.py添加对应学⽣信息增删改查的处理函数,这⾥我使⽤的原⽣SQL,便于深⼊理解其执⾏过程。后⾯有时间我会在github上添加Django框架提供的操作数据库⽅式。
import MySQLdb
from django.shortcuts import render, redirect
# Create your views here.
# 学⽣信息列表处理函数
def index(request):
conn = t(host="localhost", user="root", passwd="123456", db="sms", charset='utf8') with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
students = cursor.fetchall()
return render(request, 'student/index.html', {'students': students})
# 学⽣信息新增处理函数
def add(request):
hod == 'GET':
return render(request, 'student/add.html')
else:
student_no = ('student_no', '')
student_name = ('student_name', '')
conn = t(host="localhost", user="root", passwd="123456", db="sms", charset='utf8') with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
"values (%s,%s)", [student_no, student_name])
connmit()
return redirect('../')
# 学⽣信息修改处理函数
def edit(request):
hod == 'GET':
id = ("id")
conn = t(host="localhost", user="root", passwd="123456", db="sms", charset='utf8') with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
单片机编程语言的选择
student = cursor.fetchone()
return render(request, 'student/edit.html', {'student': student})
else:mysql面试题 增删改查
id = ("id")
student_no = ('student_no', '')
student_name = ('student_name', '')
conn = t(host="localhost", user="root", passwd="123456", db="sms", charset='utf8') with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
[student_no, student_name, id])
connmit()
return redirect('../')
# 学⽣信息删除处理函数
def delete(request):
id = ("id")
conn = t(host="localhost", user="root", passwd="123456", db="sms", charset='utf8') with conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) as cursor:
connmit()
return redirect('../')
8.模板页⾯创建(T)
学⽣信息列表页
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>学⽣列表</title>
</head>
<body>
<table border="1px" width="100%" >
<a href="../sims/add">添加学⽣</a>
<tr>
<th>编号</th>
<th>姓名</th>
<th>学号</th>
<th>操作</th>
</tr>
{% for student in students %}
<tr>
<td align="center">{{ unter }} </td>
<td align="center">{{ student.student_name }} </td>
<td align="center">{{ student.student_no }} </td>
<td align="center">
<a href="../sims/edit/?id={{ student.id }}">
编辑
</a>
<a href="../sims/delete/?id={{ student.id }}">
删除
</a>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>

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