Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查
数据库操作
MySQL数据库+pymysql
Django开发操作数据库更简单,内部提供了ORM框架。
安装第三方模块
pip install mysqlclient
ORM可以做的事:
1、创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】
2、操作表中的数据(不用写SQL语句)。
1、自己创建数据库
1)启动MySQL服务
2)自带工具创建数据库
2、django连接数据库
在setting.py文件中进行配置和修改:此处连接的是本机的mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname', # 数据库名字
'USER': 'root',
'PASSWORD': 'xxxxxx',
'HOST': 'localhost',
'PORT': 3306,
}
}
3、django操作表
-
创建表
-
删除表
-
修改表
创建表:在models.py文件中:
class UserInfo(models.Model):
name = models.CharField(max_length=32) # charfield 字符串类型
password = models.CharField(max_length=64)
age = models.IntegerField() # IntegerField 整数类型
相当于在MySQL中运行了
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
);
然后,在terminal中依次执行命令:(注意:app需要提前注册。)
python manage.py makemigrations
python manage.py migrate
即可在mysql中创建好app01_userinfo这个文件
*在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
-
手动输入一个值
-
设置默认值
size = models.IntegerField(default=2)
-
允许为空
data = models.IntegerField(null=True, blank=True)
在开发中如果想要对表结构进行调整:
-
在models.py文件中操作类即可。
-
在terminal执行命令
python manage.py makemigrations python manage.py migrate
数据的增删改查
from app01 import models
1、新建
# ###新建###
models.Department.objects.create(title="销售部")
models.Department.objects.create(title="IT部")
models.Department.objects.create(title="运营部")
models.UserInfo.objects.create(name="dumpling", password="123", age="22")
models.UserInfo.objects.create(name="noodles", password="111", age="20")
2、删除
# ###删除###
models.UserInfo.objects.filter(id=3).delete()
models.Department.objects.all().delete()
3、查看(获取数据)
###获取数据###
#获取的是列表,列表是一行一行的数据
#data_list = [行(对象) 行 行] QuerySet类型
data_list = models.UserInfo.objects.all()
for obj in data_list:
print(obj.id, obj.name, obj.password, obj.age)
# 寻找id=1的数据。data_list = [对象,],这个方法取到的还是QuerySet类型
data_list = models.UserInfo.objects.filter(id=1)
# 取对象中的第一个,这个方法就能直接将第一行对象取出来
row_obj = models.UserInfo.objects.filter(id=1).first()
print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)
4、更新
models.UserInfo.objects.all().update(password=999)
models.UserInfo.objects.filter(id=2).update(age=999)