django数据库的操作:
1. 安装第三方模块 pip install mysqlclient
2. orm无法创建数据库只能在终端创建数据库 create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
3. django连接数据库(找到settings.py文件进行配置和修改)
# 注释掉
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # django连接mysql
'NAME': 'unicom', # 数据库名字
'USER': 'root', # 用户名
'PASSWORD': '123456', # 密码
'HOST': '127.0.0.1', # 那台机器安装了MySQL
'PORT': 3306, # 端口
}
4. django创建数据表 (找到models.py 创建)
from django.db import models
class UserInfo(models.Model): # 类名即表名(一定要继承Model)
name = models.CharField(max_length=32) # 字段 = 类型(参数)
password = models.CharField(max_length=64)
age = models.IntegerField(default=2)
5. 在pycharm终端执行命名 (python版本号写自己的)
先python311 manage.py makemigrations
再python311 manage.py migrate
6. 对数据表的操作(增,删,改)
再想加一列由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:有3种选择
1 手动输入一个值【在终端报错时选择1】
2 设置默认值 age = models.IntegerField(default=2)【在终端报错时选择2】
3 允许为空 age = models.IntegerField(null=True, blank=True)
from django.db import models
class UserInfo(models.Model): # 类名即表名(一定要继承Model)
name = models.CharField(max_length=32) # 字段 = 类型(参数)
password = models.CharField(max_length=64)
age = models.IntegerField(default=2)
# 1 增 再创建表
class Department(models.Model): # 再创建一个类就是再创建表
title = models.CharField(max_length=16)
# 2.删 除表
# class Department(models.Model): # 注释掉就是删除表
# title = models.CharField(max_length=16)
# 3.改表结构
class UserInfo(models.Model): # 类名即表名(一定要继承Model)
name = models.CharField(max_length=32) # 字段 = 类型(参数)
password = models.CharField(max_length=64)
age = models.IntegerField(default=2) # 在报错时选择2 (再设置默认值)
做任何修改最后都要重新执行一遍:
在pycharm终端执行命名 (python版本号写自己的)
先python311 manage.py makemigrations
再python311 manage.py migrate
7. 对表中数据操作(增,删,改,查)
def orm(request): # orm框架 相当于游标
# 1.增
# 找到Department类在(字段=值)
Department.objects.create(title="销售")
Department.objects.create(title="IT部")
Department.objects.create(title="运营部")
#
# # 找到UserInfo类在(name列添加"武沛齐",password列添加"123", age列添加19)
# UserInfo.objects.create(name="武沛齐", password="123", age=19)
# UserInfo.objects.create(name="朱虎飞", password="666", age=29)
# UserInfo.objects.create(name="吴阳军", password="666")
# 2.删
# UserInfo.objects.filter(id=3).delete() # 在UserInfo删除id=3的
# Department.objects.all().delete() # 删除Department中所有的数据
# 3.改
# UserInfo.objects.all().update(password=999) # 找到UserInfo表中所有数据把password值改成999
# UserInfo.objects.filter(id=2).update(age=999) # 找到UserInfo表中id=2的把age的值改成999
# # 找到UserInfo表中name="朱虎飞"的把age的值改成999
# UserInfo.objects.filter(name="朱虎飞").update(age=999)
#
# # 4.查
# data_list = UserInfo.objects.all() # 获取所有数据
# for obj in data_list:
# print(obj.id, obj.name, obj.password, obj.age)
#
# data_list = UserInfo.objects.filter(id=1) # 获取指定的数据
# print(data_list)
#
# row_obj = UserInfo.objects.filter(id=1).first() # 获取第一条数据
# print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)
# return HttpResponse("成功")