django mysql 配置_django_mysql_配置

本文详细介绍了如何配置Django使用MySQL数据库,包括安装Pymysql、修改settings配置、创建数据库、定义模型类以及数据迁移。同时展示了如何添加测试数据,确保Django应用能够正确连接并操作MySQL数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置

1. 安装Pymysql

pip install PyMySQL

然后在项目同名_init__添加

from pymysql import install_as_MySQLdb

install_as_MySQLdb()

如下

1017ae2ca5769eb41c10900d9895de47.png

2. 让Django使用mysql,修改setting配置,如下:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'HOST': '127.0.0.1', # 数据库主机

'PORT': 3306, # 数据库端口

'USER': 'root', # 数据库用户名

'PASSWORD': 'mysql', # 数据库用户密码

'NAME': 'django_demo' # 数据库名字

}

}

1f4c9214303ab824fbae376bedff0bb6.png

3. 在自己数据中创建一个djangi_demo

create database django_demo default charset=utf8;

定义模型类

1. 创建一个新的应用,为booktest,在models.py 文件中定义模型类,然后去setting注册应用

python manage.py startapp booktest

e27a345db750ce6c8d6d4fe998e8dc22.png

from django.db import models

#定义图书模型类BookInfo

class BookInfo(models.Model):

btitle = models.CharField(max_length=20, verbose_name='名称')

bpub_date = models.DateField(verbose_name='发布日期')

bread = models.IntegerField(default=0, verbose_name='阅读量')

bcomment = models.IntegerField(default=0, verbose_name='评论量')

is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

class Meta:

db_table = 'tb_books' # 指明数据库表名

verbose_name = '图书' # 在admin站点中显示的名称

verbose_name_plural = verbose_name # 显示的复数名称

def __str__(self):

"""定义每个数据对象的显示信息"""

return self.btitle

#定义英雄模型类HeroInfo

class HeroInfo(models.Model):

GENDER_CHOICES = (

(0, 'male'),

(1, 'female')

)

hname = models.CharField(max_length=20, verbose_name='名称')

hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')

hcomment = models.CharField(max_length=200, null=True, verbose_name='描述信息')

hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书') # 外键

is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

class Meta:

db_table = 'tb_heros'

verbose_name = '英雄'

verbose_name_plural = verbose_name

def __str__(self):

return self.hname

1) 数据库表名,我们要自己定义,可通过db_table 指明数据库表名,不使用他默认创建的,Django默认以 小写app应用名_小写模型类名 为数据库表名。

2) django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

3) 字段类型

1c904de9acb63eb707a0704b9f950d72.png

4) 选项

48fb8187029ed49e5336699bb06e2bcb.png

null是数据库范畴的概念,blank是表单验证范畴的

5) 外键

一般我用CASCADE

在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:

CASCADE 级联,删除主表数据时连通一起删除外键表中数据

PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据

SET_NULL 设置为NULL,仅在该字段null=True允许为null时可用

SET_DEFAULT 设置为默认值,仅在该字段设置了默认值时可用

SET() 设置为特定值或者调用特定方法,如

from django.conf import settings

from django.contrib.auth import get_user_model

from django.db import models

def get_sentinel_user():

return get_user_model().objects.get_or_create(username='deleted')[0]

class MyModel(models.Model):

user = models.ForeignKey(

settings.AUTH_USER_MODEL,

on_delete=models.SET(get_sentinel_user),

)

DO_NOTHING 不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常

迁移

将模型类同步到数据库中。

1> 生成迁移文件

python manage.py makemigrations

注:这里可以指定迁移某一个APP

例如users APP:

python manage.py makemigrations users

2> 同步到数据库

python manage.py migrate

添加测试数据

1> 添加图书信息

insert into tb_books(btitle,bpub_date,bread,bcomment,is_delete) values

('射雕英雄传','1980-5-1',12,34,0),

('天龙八部','1986-7-24',36,40,0),

('笑傲江湖','1995-12-24',20,80,0),

('雪山飞狐','1987-11-11',58,24,0);

2> 添加英雄信息

insert into tb_heros(hname,hgender,hbook_id,hcomment,is_delete) values

('郭靖',1,1,'降龙十八掌',0),

('黄蓉',0,1,'打狗棍法',0),

('黄药师',1,1,'弹指神通',0),

('欧阳锋',1,1,'蛤蟆功',0),

('梅超风',0,1,'九阴白骨爪',0),

('乔峰',1,2,'降龙十八掌',0),

('段誉',1,2,'六脉神剑',0),

('虚竹',1,2,'天山六阳掌',0),

('王语嫣',0,2,'神仙姐姐',0),

('令狐冲',1,3,'独孤九剑',0),

('任盈盈',0,3,'弹琴',0),

('岳不群',1,3,'华山剑法',0),

('东方不败',0,3,'葵花宝典',0),

('胡斐',1,4,'胡家刀法',0),

('苗若兰',0,4,'黄衣',0),

('程灵素',0,4,'医术',0),

('袁紫衣',0,4,'六合拳',0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值