目录
1、python连接mysql基本语法
2、Django框架数据库操作-ORM框架
ORM可以将复杂的代码简单化,通过orn这个中间组将我们写的代码翻译成标准的sql语句,能大大减少我们的开发成本。
2.1 安装第三方模块
pip install mysqlclient
安装失败:
解决办法:mysqlclient安装 - 远山渡月 - 博客园
去这个网站找轮子
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
下载对应的python版本
然后将文件拷贝到项目文件夹:
回到终端下载:
pip install mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl
完成:
在设置中也能看到
3、使用ORM框架
由上面的两点可知,Django并不能帮我们创建数据库,所以我们需要在mysql中自己创建数据库。
3.1、创建数据库
create database djangotest1 default charset=utf8;
3.2 django连接数据库
在setting.py文件中进行修改:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangotest1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
3.3 django操作数据表
(1)创建表
在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里的类名
(2)删除表
直接将要删除的对应类的代码注释或者删掉
再在终端执行命令
python manage.py makemigrations
python manage.py migrate
查看,表已经删除
(3)修改表结构
删除字段,注释或直接删除相应代码,并在终端执行指令:
增加字段时,先写好相应的变量:
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
总结:
: