Django 进行数据库操作(ORM框架+mysqlclient+mysql)

发布于:2025-02-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

1.安装mysqlclient

打开pycharm,个人习惯在终端下载

pip install mysqlclient

2.ORM

ORM(Object-Relational Mapping,对象关系映射)的主要作用是简化数据库操作,让开发者可以用面向对象的方式操作数据库,而无需直接编写 SQL 语句。

注意:ORM 通常无法直接创建数据库,只能操作数据库中的表。数据库需要提前手动创建或通过其他工具创建。

1.手动创建数据库

create database Django_test_2 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2.django连接数据库

首先找到项目中settings.py文件中的DATABASES部分,将其注释掉

将下面的代码复制上去

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Django_test_2',  # 数据库名字
        'USER': 'root',
        'PASSWORD': '123456',    # 你的MySQL密码
        'HOST': '127.0.0.1',     #本机
        'PORT': 3306,
    }
}

3.django操作表(创建、删除、修改)

创建 

在app01(你创建的app名称)文件夹下的models.py文件,写一个类

class UserInfo(models.Model):
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

 解释:Django 会根据模型生成类似以下的 SQL 语句:

CREATE TABLE UserInfo (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(32) NOT NULL,
    password VARCHAR(64) NOT NULL,
    age INT NOT NULL
);

确保app已经注册

在pycharm终端依次执行下面两个命令来创建表

python manage.py makemigrations
python manage.py migrate

 我依次输入了两个命令,但终端实现的两个命令的输出信息重叠了,但可以看出结果创建成功了

mysql中显示创建成功:

从 show tables; 的结果可以看出,当前数据库 Django_test_2 中有多张表,app01_userinfo是我们想创建的表,其他的是 Django 默认自动生成的系统表(可以先不用管)。

再创建两个表

class Department(models.Model):
    name = models.CharField(max_length=64)  # 部门名称
    create_time = models.DateTimeField(auto_now_add=True)  # 自动记录创建时间

class Employee(models.Model):
    name = models.CharField(max_length=32)  # 员工姓名
    department = models.ForeignKey(Department, on_delete=models.CASCADE)  # 关联部门(外键)
    salary = models.IntegerField()  # 工资(整数)
    hire_date = models.DateField()  # 入职日期

运行那两条命令

创建成功 

删除

如果想删除某些表,直接把对应表的class注释掉,然后再在终端运行那两条命令,例如删除app01_employee 表

删除成功

修改

当表中删除列时

例如删除create_time

 直接把这一行代码注释掉或删掉

 然后再运行那两条命令

 删除那一列成功

当表中新增列时

 例如新增create_time

运行python manage.py makemigrations命令

如果表中已有数据,Django 会提示你选择如何处理新增字段的默认值:

有下面三种解决方式:

  1. 输入 1,然后输入一个默认值
  2. 在模型中设置 default=xxx
    from django.utils import timezone
    
    create_time = models.DateTimeField(default=timezone.now)
  3. 允许字段为空
    create_time = models.DateTimeField(null=True, blank=True)

学习:【最新Python的web开发全家桶(django+前端+数据库)-哔哩哔哩】 https://b23.tv/01F6vr5