小言_互联网的博客

【Django 2021年最新版教程8】操作Mysql数据库 mysqlclient安装和使用

392人阅读  评论(0)

 

一、安装

1. 安装mysql

windows下推荐下载phpstudy,一键安装,具体操作百度:phpstudy 安装教程

安装时记下数据库登陆的账号密码。

安装成功之后,如下

请先确保mysql的版本大于5.6,如果不大于,在django会报错,需要升级mysql,请参考https://shijianfeng.blog.csdn.net/article/details/117428669

 

一切都没有问题之后,

新建一个数据库,名字叫visit_tsinghua,编码一定要选择utf8-general-ci,否则不支持中文存储

 

2. 安装mysqlclient2.0.3

安装成功之后,在外面可以看到

 

二、在Django框架里使用mysql

1.  在settings.py中修改DATABASES内容如下:

 


  
  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.mysql',
  4. 'NAME': 'visit_tsinghua',
  5. 'USER': 'root',
  6. 'PASSWORD': 'root',
  7. 'HOST': '127.0.0.1',
  8. 'PORT': '3306',
  9. 'OPTIONS': {
  10. "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
  11. }
  12. }
  13. }

其中NAME是你的数据库名称,HOST是数据库地址,其它的大家都知道。

 

2. 进入models.py中创建与你的数据库表相对应的对象model


  
  1. from django.db import models
  2. class User(models.Model):
  3. id = models.AutoField(primary_key=True) # django 在每一次save()操作后都可以正常的增加一条数据并且id顺序自增。id无需在save中创建,数据表自动添加
  4. name = models.CharField(max_length=50)
  5. level = models.IntegerField(default=1) # 用户等级,默认1
  6. createTime = models.DateTimeField(null=True)
  7. class Meta:
  8. db_table = 'User' # 数据表名称

命令行中进入 manage.py同级目录

 

执行python manage.py makemigratetions app名(可选)


  
  1. # 让 Django 知道我们在我们的模型有一些变更
  2. python manage.py makemigrations userWeb

再执行


  
  1. # 创建表结构
  2. python manage.py migrate

查看数据库,发现已经新建了user表了。

这叫ORM,对象关系映射(Object Relation Mapping),实现对象和数据库的映射,隐藏数据访问的细节,不需要编写SQL语句

 

在models.py中可以创建多个表的model。

 

3. 在admin.py中注册model


  
  1. from django.contrib import admin
  2. from . import models
  3. # Register your models here.
  4. admin.site.register(models.User)

 

 

4. 其中testUser.html是放在templates中的前端页面:


  
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>请输入用户信息 </p>
  5. <form action="/testadduser" method="post">
  6. {%csrf_token%}
  7. 姓名: <input type="text" name="name"> <br>
  8. 用户等级: <input type="number" name="level"> <br>
  9. <input type="submit" value="提交">
  10. </form>
  11. </body>
  12. </html>

 

 

 

5. views.py(或者自己创建的py文件)中编写代码主要看 testAddUser 这个方法:


  
  1. import datetime
  2. from django.http import HttpResponse
  3. from django.shortcuts import render
  4. # Create your views here.
  5. from userWeb.models import User
  6. def index(request):
  7. return render(request, './userWeb/index.html')
  8. # 加法页面
  9. def add(request):
  10. return render(request, './userWeb/add.html')
  11. # 执行加法
  12. def doadd(request):
  13. a = request.POST[ 'a']
  14. b = request.POST[ 'b']
  15. a = int(a)
  16. b = int(b)
  17. result = a + b
  18. # return HttpResponse(str(result))
  19. context = {}
  20. context[ 'a'] = a
  21. context[ 'b'] = b
  22. context[ 'result'] = result
  23. return render(request, './userWeb/add_result.html', context)
  24. # 增加用户页面
  25. def testUser(request):
  26. return render(request, './userWeb/testUser.html')
  27. def testAddUser(request):
  28. name = request.POST[ 'name']
  29. level = request.POST[ 'level']
  30. createTime = datetime.datetime.now()
  31. user = User.objects.create(name=name, level=level, createTime=createTime)
  32. context = {}
  33. context[ 'msg'] = '用户新增成功'
  34. context[ '数据库中的id'] = user.id
  35. return HttpResponse(str(context))

 

6.到urls.py中添加路径完整代码如下:


  
  1. """visit_tsinghua URL Configuration
  2. The `urlpatterns` list routes URLs to views. For more information please see:
  3. https://docs.djangoproject.com/en/3.2/topics/http/urls/
  4. Examples:
  5. Function views
  6. 1. Add an import: from my_app import views
  7. 2. Add a URL to urlpatterns: path('', views.home, name='home')
  8. Class-based views
  9. 1. Add an import: from other_app.views import Home
  10. 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
  11. Including another URLconf
  12. 1. Import the include() function: from django.urls import include, path
  13. 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
  14. """
  15. from django.contrib import admin
  16. from django.urls import path
  17. from userWeb.views import *
  18. urlpatterns = [
  19. path( 'admin/', admin.site.urls),
  20. path( 'index', index),
  21. path( "add", add),
  22. path( "doadd", doadd),
  23. path( "testuser", testUser),
  24. path( "testadduser", testAddUser),
  25. ]

 

7. 运行效果

 

 

 

 

 

参考:

https://www.cnblogs.com/mr-yoatl/p/11756810.html

https://blog.csdn.net/chengkuiwu3328/article/details/100909334


转载:https://blog.csdn.net/u013288190/article/details/117419657
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场