Django项目创建的准备工作【3】

【 一 】建立数据库

image-20240509195336089

  • 创建库: 命令(指定编码)

  • 创建用户: 并授权

    • 用户: luffy: 密码xxxxxx , 只授予luffy库权限

  • 使用mysql创建lufy数据库

    • root账号和密码--->万一泄露---》整个数据库就不安全了。
      创建个用户,这个用户只对当前项目 库 有权限

解决方法:

  • 给每个项目创建一个数据库用户

  • 在mysql8中的utf8 就是utf8mb3

    create database luffy default charset=utf8mb4;
    #2 查看用户
    SELECT User, Host FROM mysql.user;
    #3 创建用户
    CREATE USER 'luffy'@'localhost' IDENTIFIED BY '123123?';
    CREATE USER 'luffy'@'%' IDENTIFIED BY '123123?';
    # 授权
    GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;
  1. 创建luffy库

create database luffy default charset=utf8mb4;

这条命令在MySQL中创建了一个名为luffy的数据库,并指定其默认字符集为utf8mb4utf8mb4是一个能够存储四字节Unicode字符的字符集,它支持包括emoji在内的广泛字符。 \2. 查看用户

​
SELECT User, Host FROM mysql.user;

这条命令从mysql.user系统表中查询所有的MySQL用户以及他们对应的主机(Host)信息。这可以帮助你了解当前MySQL服务器上有哪些用户。 \3. 创建用户

CREATE USER 'luffy'@'localhost' IDENTIFIED BY 'Luffy123?';  
CREATE USER 'luffy'@'%' IDENTIFIED BY 'Luffy123?';

这两条命令在MySQL中创建了两个用户,但他们的Host(来源地址)不同。第一个用户'luffy'@'localhost'只能从localhost(即该MySQL服务器本身)访问。第二个用户'luffy'@'%'可以从任何地址访问(%是一个通配符,代表任何主机)。这两个用户都有相同的密码Luffy123?。 \4. 授权

GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'localhost' WITH GRANT OPTION;  
GRANT ALL PRIVILEGES ON luffy.* TO 'luffy'@'%' WITH GRANT OPTION;
  • 注意

你实际上是授予了名为 luffy 的用户(无论是从 localhost 还是从任何其他主机 % 连接)对 luffy 数据库的所有权限,包括增删改查(SELECT, INSERT, UPDATE, DELETE)以及授予其他用户权限的权限(WITH GRANT OPTION)。

这意味着任何使用 luffy 用户名和相应密码的用户(无论是从 localhost 还是从远程主机连接)都可以对 luffy 数据库执行任何操作,包括查看、修改、删除表中的数据,以及创建、修改或删除表本身。

其他用户(非 luffy 用户)默认情况下是看不到 luffy 数据库的内容的,除非他们也被授予了对 luffy 数据库的相应权限。但是,他们仍然可以看到 luffy 数据库的存在,因为 SHOW DATABASES; 命令会列出服务器上的所有数据库,无论用户是否有权限访问它们。

image-20240509194744078

image-20240509200803910

image-20240509201630726

【 二 】连接数据库

【 1 】一般连接(傻瓜连接)

  • 个人练练就可以了

# 如果用户和密码直接写死 ----》 代码泄露 ----》 这样就很不安全!!!
​
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'luffy',
        'PASSWORD': '123123?'
    }
}

image-20240509202839152

  • 安装 mysqlclient

# pip install mysqlclient

image-20240509203058083

image-20240509203118885

##

【 2 】建议使用

  • 代码

# seetings.py
​
user = os.environ.get("MYSQL_USE",'luffy')
password = os.environ.get("MYSQL_PWD","123123?")
​
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'luffy',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': user,
        'PASSWORD': password
    }
}
  • 编辑环境变量

image-20240509204210222

image-20240509204125791

做完之后就会显示

image-20240509204857245

这里上面显示

你的 Django 项目正在运行开发服务器,并且检测到了未应用的迁移。在继续之前,建议你应用这些迁移,以确保项目正常运行。

你可以运行以下命令应用迁移:

python manage.py migrate

这将应用所有未应用的迁移,使数据库与项目的当前状态保持同步。完成后,重新启动开发服务器,你的项目应该可以正常运行了。

【 3 】创建表

  • 注意要在根目录进行数据迁移!!!

from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    mobile = models.CharField(max_length=11, unique=True)
    # 需要pillow包的支持
    icon = models.ImageField(upload_to='icon', default='icon/default.png')
​
    class Meta:
        db_table = 'lufy_user'
        verbose_name = '用户表'
        verbose_name_plural = verbose_name
​
    def __str__(self):
        return self.username
    
# settings.py配置文件
# 扩写auth的user表 在AbstractUser必须这样
AUTH_USER_MODEL='user.User'
  • 这个就说明缺少需要pillow包的支持

image-20240509205632096

image-20240509205720330

  • 注意要在根目录进行数据迁移!!!
# python manage.py makemigrations
# python manage.py migrate

image-20240509210104603

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值