首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Django框架003:orm与MySQL数据库的连接及踩坑记录

Django框架003:orm与MySQL数据库的连接及踩坑记录

作者头像
淼学派对
发布2023-10-14 11:11:42
发布2023-10-14 11:11:42
1.1K0
举报
文章被收录于专栏:云开发小程序1云开发小程序1

mysqlclient 模块

Django支持mysqlclient 模块,通过它来连接mysql数据库大大节省了,我们使用pymysql模块库的一些繁琐的操作。

代码语言:javascript
复制
pip install mysqlclient 

ORM

ORM可以帮助我们做两件事:

1.创建、修改、删除数据库中的表(不用写sql语句)但是【无法创建数据库,数据库必须我们手动在mysql中创建】

2.操作表中的数据(不用写sql语句)

所以:

1.手动创建数据库

启动自己的mysql服务

方式1:进入mysql中输入以下命令:

代码语言:javascript
复制
net start 你的mysql名字

方式2:进入“任务管理器”>右键启动

 cmd命令窗创建数据库
代码语言:javascript
复制
create database 数据库名字;

2.Djngo连接数据库

在setting.py文件中进行配置和修改。
代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '数据库名字', 
        'USER': 'mysql用户名',
        'PASSWORD': 'mysql密码器',
        'HOST': '127.0.0.1',  # 安装MySQL数据库的机器
        'PORT': 3306  # 端口
    }
}

3.确保app已注册

在setting.py中查看到(app01已经注册)

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config'
]

4.Djngo操作表(自动创建表的命名方式:注册的app名字+class的类名“UserInfo”)

在models.py文件中写入(示范代码:在app01_userinfo表中创建数据结构:
name,password,age)
代码语言:javascript
复制
from django.db import models


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

写入之后紧接着在pycharm中的命令窗口,在Django文件的根目录下输入命令:

代码语言:javascript
复制
python manage.py makemigrations

此时观察migrations文件夹下是否自动添加了py文件(如下图所示:)

然后,在输入命令:

代码语言:javascript
复制
python manage.py migrate
到此,有可能发生的报错
代码语言:javascript
复制
django.db.utils.NotSupportedError: MySQL 5.7 or later is required

这是安装的Django与mysql的版本不兼容导致。

问题解决

1.降低我们Django模块库的版本

2.创新安装一个8版本级以上的mysql数据库

解决兼容问题后,重新运行命令:python manage.py migrate

数据库中的数据表
 数据表的数据结构
删除表/删除表中的数据

在models.py文件中想要删除表的类(如:userinfo类)/数据结构(如:name字段)注释或删除,并重新执行下面命令

代码语言:javascript
复制
python manage.py makemigrations
python manage.py migrate
修改表数据结构

在表中新增列时,由于已存在列表中可能已有数据,所以新增列必须要制定新增列对应的数据:

1,手动输入一个值

设置默认值

代码语言:javascript
复制
age = models.IntegerField(default=2)

允许为空

代码语言:javascript
复制
age = models.IntegerField(null=True,blank=True)

总结

以后在开发中如果想要对表结构进行调整:

在models.py文件中操作即可。

代码语言:javascript
复制
python manage.py makemigrations
python manage.py migrate
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • mysqlclient 模块
  • ORM
    • 1.手动创建数据库
      • 启动自己的mysql服务
      •  cmd命令窗创建数据库
    • 2.Djngo连接数据库
      • 在setting.py文件中进行配置和修改。
    • 3.确保app已注册
    • 4.Djngo操作表(自动创建表的命名方式:注册的app名字+class的类名“UserInfo”)
      • 在models.py文件中写入(示范代码:在app01_userinfo表中创建数据结构:
      • name,password,age)
      • 到此,有可能发生的报错
      • 问题解决
      • 数据库中的数据表
      •  数据表的数据结构
      • 删除表/删除表中的数据
      • 修改表数据结构
  • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档