目录


ORM可以将复杂的代码简单化,通过orn这个中间组将我们写的代码翻译成标准的sql语句,能大大减少我们的开发成本。
pip install mysqlclient
安装失败:

解决办法:mysqlclient安装 - 远山渡月 - 博客园
去这个网站找轮子
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
下载对应的python版本
然后将文件拷贝到项目文件夹:

回到终端下载:
pip install mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl
完成:

在设置中也能看到

由上面的两点可知,Django并不能帮我们创建数据库,所以我们需要在mysql中自己创建数据库。
create database djangotest1 default charset=utf8;

在setting.py文件中进行修改:
-
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'djangotest1',
- 'USER': 'root',
- 'PASSWORD': '123456',
- 'HOST': '127.0.0.1',
- 'PORT': '3306',
- }
- }
在app->models.py中编写代码:
- from django.db import models
-
- # Create your models here.
- class UserInfo(models.Model):
- name = models.CharField(max_length=32)
- password = models.CharField(max_length=64)
- age = models.IntegerField()
-
解读:
models中的类,其实就是Django创建的表,Django会将python类语法翻译成sql语句:

在终端输入指令:
- # 迁移数据库
- python manage.py makemigrations
- python manage.py migrate
如果报错

说明:

解决办法,升级mysql
mysql升级5.6_MySQL从5.5升级到5.6_陈易铭的博客-CSDN博客
卸载mysql
https://www.jb51.net/article/231519.htm
https://jingyan.baidu.com/article/1e5468f921400f484961b7d1.html
安装mysql
mysql数据库安装(详细)_体会!的博客-CSDN博客_mysql安装
MySQL的安装(完整版)_幺妹儿儿的博客-CSDN博客_安装mysql
如果还有报错:


解决Windows下django.db.utils.OperationalError: (2026, ‘SSL connection error: unknown error number‘)问题_车陂IT仔的博客-CSDN博客 上面的方法试了n边,tnd不知道是我8.30的版本不合适还是咋的,就是不好使。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
经过我一番折腾,发现5.5版本和5.8版本的mysql都不适合于Django连用,为什么?
听我给你说说血与泪:
5.5的mysql,Django爱答不理,

5.8的mysql,Django高攀不起。

Django服务器安装ssl证书,通过django中的ssl证书进行用户身份验证_温特二Winter的博客-CSDN博客
所以建议,使用5.6和5.7的正好,因为5.6没有ssl,5.7默认关闭ssl。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
现在走到这一步,只能卸载重装。
o(╥﹏╥)o
django支持什么版本的mysql_实战分享丨MySQL 与Django版本匹配相关经验_时光琉璃盏的博客-CSDN博客
![]()
搏一搏单车变摩托!
下载5.7
安装MySQL的安装(完整版)_幺妹儿儿的博客-CSDN博客_安装mysql

在mysql中进行查询:
可以看到表已经建好了。

结构与类中的一样


其他的表是Django中注册的默认表,实现一些内部功能:


app->models.py
- from django.db import models
-
- # Create your models here.
- class UserInfo2(models.Model):
- name = models.CharField(max_length=32)
- password = models.CharField(max_length=64)
- age = models.IntegerField()
-
- class Department(models.Model):
- title = models.CharField(max_length=50)
-
- class Employee(models.Model):
- position = models.CharField(max_length=50)
终端输入指令:
- python manage.py makemigrations
- python manage.py migrate

查看数据库:

可以观察发现,我们的表名其实就是:app模块名+models里的类名
直接将要删除的对应类的代码注释或者删掉

再在终端执行命令
- python manage.py makemigrations
- python manage.py migrate

查看,表已经删除

删除字段,注释或直接删除相应代码,并在终端执行指令:



增加字段时,先写好相应的变量:
- class Department(models.Model):
- title = models.CharField(max_length=50)
- Dep_No = models.IntegerField(default=10)
- Dep_Na = models.CharField(max_length=100)
然后输入指令:
- python manage.py makemigrations
- python manage.py migrate
再在终端输入选项:

1、现在提供一次性默认值(将在所有现有行上设置,该列的值为空)
直接在终端赋值即可。
2、退出,让我在models.py中添加一个默认值
在字段后面加上,default = ?
设置默认为空:
Dep_data = models.IntegerField(null=True,blank=True)

切记,每次修改完表的结构,都有使用数据库迁移指令,重新构造数据表:
- python manage.py makemigrations
- python manage.py migrate
总结:

: