1-3 django的orm-连接MySQL模块+创建数据库+连接msql的配置+类创建表+创建和修改表结构+增删改查
1.视频 【1-11、1-12、1-13、1-14、1-15、1-16】
https://www.bilibili.com/video/BV1S44y1K7Hd?p=11
2.笔记
7.数据库操作
MySQL数据库 + pymysql
import pymysql # 1.连接MySQL conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd="root123", charset='utf8', db='unicom') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 2.发送指令 cursor.execute("insert into admin(username,password,mobile) values('wupeiqi','qwe123','15155555555')") conn.commit() # 3.关闭 cursor.close() conn.close()
Django开发操作数据库更简单,内部提供了ORM框架。
pip install mysqlclient
7.2 ORM
ORM可以帮助我们做两件事:
-
创建、修改、删除数据库中的表(不用你写SQL语句)。 【无法创建数据库】
-
操作表中的数据(不用写SQL语句)。
1. 自己创建数据库
-
启动MySQL服务
-
自带工具创建数据库
create database gx_day15 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2. django连接数据库
在settings.py文件中进行配置和修改。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'gx_day15', # 数据库名字 'USER': 'root', 'PASSWORD': 'root123', 'HOST': '127.0.0.1', # 那台机器安装了MySQL 'PORT': 3306, } }
3.django操作表
-
创建表
-
删除表
-
修改表
创建表:在models.py文件中
实际对应执行的命令:
create table app01_userinfo( id bigint auto_increment primary key, name varchar(32), password varchar(64), age int )
执行命令:
python3.9 manage.py makemigrations
python3.9 manage.py migrate
注意:app需要提前注册。
如果不想要表和字段,注释即可,然后重新执行两个迁移操作即可
但如果在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
解决方法:
1.手动输入一个值。
2.退出,
在定义中添加一个默认值
age = models.IntegerField(default=2)
定义为空
data = models.IntegerField(null=True, blank=True)
以后在开发中如果想要对表结构进行调整:
-
在models.py文件中操作类即可。
-
命令
python3.9 manage.py makemigrations
python3.9 manage.py migrate
快捷执行方式:有提示
# 本质:insert into app01_userinfo(name)values('aaa') # UserInfo.objects.create(name='aaa', password='1',age=19)
表中数据操作:
from app01.models import UserInfo,Department # 测试ORM操作表中的数据 # 1.新建 # Department.objects.create(title='it') # Department.objects.create(title='hr') # Department.objects.create(title='ui') # UserInfo.objects.create(name='1', password='1',age=1) # UserInfo.objects.create(name='2', password='2') # 2.删除 # 删除指定一条数据 # UserInfo.objects.filter(id=2).delete() # # 删除所有数据 # UserInfo.objects.all().delete() # 3.获取数据 # 3.1 获取符合条件的所有数据 # data_list = [对象行、行、行] QuerySet类型 # data_list = UserInfo.objects.all() # print(data_list) # for object in data_list: # print(object.id, object.name, object.password) # 3.1 获取第一条数据[对象] # data_list = [对象行] # data_list = UserInfo.objects.filter(id=3) # print(data_list) # # 获取具体第一行内容 # row_obj = UserInfo.objects.filter(id=3).first() # print(row_obj.id, row_obj.name, row_obj.password, row_obj.age) # 4.更新数据 # 更新所有的 # UserInfo.objects.all().update(password=999) # # 更新指定的一条 # UserInfo.objects.filter(id=2).update(password=888)