使用Django与MySQL建立连接的简单介绍
目录
这里只展示关键代码
增:save()
查:objects.all()/objects.get(k=xx)
更新:基于查询,更新属性,save()
删:基于查询,delete()
1.1、下载pymysql
可以使用指令安装也可以:pip install pymysql
setting —> Project —> Python Interpreter —> 点击 +号 —> 输入pymysql选择版本安装即可(但是我的不好使,我使用的是命令行操作)
1.2、修改settings配置
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db', # 数据库名
'USER': '你的数据库用户名',
'PASSWORD': '你的数据库密码',
'HOST': 'localhost',
'PORT': '3306',
}
}
1.3、创建数据库
-- 这里我的数据库名叫django_db
create database django_db character set utf8
1.4、定义模型类
-
模型类被定义在"应用/models.py"文件中。
-
模型类必须继承自Model类,位于包django.db.models中。
# user/models.py
from django.db import models
# Django通过Models定义实现数据库表的定义
# Create your models here.
# 定义模型
class Student(models.Model):
s_name = models.CharField(max_length=15)
s_age = models.IntegerField(default=1)
-----------------------------------
# user/views.py
from django.http import HttpResponse
from user.models import Student
# 在视图函数中实现增操作:这里我只展示了增
def add_student(request):
student = Student()
student.s_name = 'Jerry'
student.s_age = 18
student.save()
return HttpResponse('添加成功!')
---------------------------------
# user/urls.py
from django.urls import path
from user import views
urlpatterns = [
path('add_student',views.add_student),
]
--------------------------------
# 主urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('user/',include('user.urls'))
]
1.5、 生成迁移文件并执行(通知Django同步数据到库中)
# 主目录下的__init__.py
import pymysql
pymysql.install_as_MySQLdb()
命令行:
# 生成迁移文件 指令
python manage.py makemigrations
# 执行迁移文件,把表映射到库中 指令
python manage.py migrate
然后启动Django:
>python manage.py runserver
查看数据库发现数据库和表以及添加操作都成功啦!!
而且浏览器端也可以成功访问到:
1.6、可能遇到的报错
关于mysql驱动,这里我演示的是 pymsql
1.6.1 settings.py处
如果把user写成了username则可能发生报错:
django.db.utils.OperationalError: (1045, "Access denied for user 'Administrator'@'localhost' (using password: YES)")
1.6.2 生成迁移文件时报错
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
然后我就执行命令:pip install cryptography
,再执行迁移即可。