Django的数据库配置、生成(创建)过程、写入数据、查看数据的学习过程记录

目录

  • 01-配置数据库信息
  • 02-安装Python的MySQL数据库驱动程序 mysqlclient
  • 03-安装Mysql,并启动Mysql
  • 04-定义Django的数据库模型(定义数据表-编写models.py文件)
  • 05-按照数据的配置生成数据库(执行迁移命令)
    • 05-01-生成迁移执行文件
    • 05-02-执行数据库模型迁移
  • 06-查看数据库
  • 07-向数据库写入数据并查看数据
  • 附完整代码

01-配置数据库信息

在文件:"E:\Python_project\P_001\myshop-test\myshop\myshop\settings.py"中写入以下数据库的配置信息:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'shop-test',
        'USER': 'shop-test',
        'PASSWORD': 'Aa_123456',
        'HOST': 'localhost',
        'PORT': '3306',
        # 取消外键约束,否则多对多模型迁移报django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')
        'OPTIONS': {
            "init_command": "SET foreign_key_checks = 0;",
            'charset': 'utf8'
        },
    }
}

在这里插入图片描述

上面的代码比较好理解,就是对于语句:django.db.backends.mysql作一些说明:
在Django中,'django.db.backends.mysql'是一个数据库后端引擎的路径,用于指定使用MySQL作为数据库的后端。数据库后端引擎是Django用于与不同类型的数据库进行交互的组件。它提供了对数据库的连接、查询和数据操作的支持。

Django支持多个数据库后端引擎,例如MySQL、PostgreSQL、SQLite等。通过设置'ENGINE'选项,你可以指定使用的具体后端引擎。在这个例子中,'django.db.backends.mysql'表示使用MySQL作为数据库后端引擎。

通过选择不同的后端引擎,你可以使用不同类型的数据库来存储和检索数据,而Django提供的ORM(对象关系映射)功能将为你提供一致的数据访问接口,无论使用的是哪种数据库后端引擎。这样,你可以方便地切换和管理不同类型的数据库,而无需更改大量的代码。

在上面的配置中还取消了外键约束,否则在“多对多”模型关系的迁移中会出现下面的提示:

django.db.utils.IntegrityError:(1215, 'Cannot add foreign key constraint')

如果需要配置输出对应的数据库语句(*),则需要在"E:\Python_project\P_001\myshop-test\myshop\myshop\settings.py"写入下面的配置语句:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}

上面的日志输出配置代码中的语句“‘disable_existing_loggers’: False,”是什么意思?
答:在Django的日志配置中,'disable_existing_loggers'是一个布尔值选项,用于指定是否禁用现有的日志记录器。它的作用是控制是否保留已经存在的日志记录器,而不是完全替换它们。

'disable_existing_loggers'设置为True时,将禁用现有的日志记录器。这意味着,在日志配置中定义的新的日志记录器会生效,而现有的日志记录器将被忽略。这通常用于完全替换默认的Django日志配置。

'disable_existing_loggers'设置为False时,保留现有的日志记录器。这意味着,新的日志记录器将与现有的记录器一起使用,不会替换它们。这通常用于扩展默认的Django日志配置,添加额外的日志记录器或修改现有记录器的行为。

在给定的配置语句中,'disable_existing_loggers': False表示不禁用现有的日志记录器,而是保留它们,并将新的日志记录器添加到现有的记录器集合中。这样可以确保现有的Django数据库后端日志记录器仍然有效,并将日志输出发送到控制台。

语句: ‘propagate’: True, 是什么意思?
答:在Django的日志配置中,'propagate'是一个布尔值选项,用于指定日志消息是否应该传播给更高级别的日志记录器。

'propagate'设置为True时,日志消息将传播给父级日志记录器。这意味着,如果当前的日志记录器无法处理日志消息,它将将消息传递给其父级记录器,以便其处理或传递给更高级别的记录器。传播使得日志消息可以在整个日志记录器层次结构中进行传递和处理。

'propagate'设置为False时,日志消息不会传播给父级日志记录器。如果当前的日志记录器无法处理日志消息,消息将被静默丢弃,不会传递给更高级别的记录器。

在给定的配置语句中,'propagate': True表示日志消息将传播给父级记录器。这意味着,如果'django.db.backends'记录器无法处理日志消息,它将传递给更高级别的记录器进行处理。通过设置为True,你可以确保数据库后端日志消息在整个日志记录器层次结构中传播,以便根据需要进行处理或记录。

02-安装Python的MySQL数据库驱动程序 mysqlclient

安装命令如下(安装前注意把代理工具关掉 ):

pip install -i https://mirrors.aliyun.com/pypi/simple mysqlclient

安装成功后如下图所示:
在这里插入图片描述

03-安装Mysql,并启动Mysql

在这里,可以用小皮面板来安装Mysql,当然也可以自己去Mysql的官网去下载安装包安装。
如果是用小皮面板来安装Mysql,则可以参考我之前写的博文:
https://blog.csdn.net/wenhao_ir/article/details/126170178
安装好后启动Mysql的服务:
在这里插入图片描述
然后切换到数据库,按第01步中的配置代码中的信息新建一个数据库:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

04-定义Django的数据库模型(定义数据表-编写models.py文件)

在"“E:\Python_project\P_001\myshop-test\myshop\app1\models.py”"中写入下面的内容:

from django.db import models

# Create your models here.


class User(models.Model):
    username = models.CharField(max_length=50)
    email = models.EmailField(unique=True)
    # 其他字段...

    def __str__(self):
        return self.username

    

05-按照数据的配置生成数据库(执行迁移命令)

关于为什么在Django中把数据库的生成称为叫迁移?请参看我写的另一篇博文,https://blog.csdn.net/wenhao_ir/article/details/131544152

05-01-生成迁移执行文件

通过下面的几条命令生成“迁移执行文件”:

CD E:\Python_project\P_001\myshop-test\myshop\
E:
manage.py makemigrations

上面的命令正常的话运行结果如下所示:
在这里插入图片描述
打开文件:“E:\Python_project\P_001\myshop-test\myshop\app1\migrations\0001_initial.py”
可以看到文件中包含当前模型的创建语句,0001_initial.py的内容如下:

# Generated by Django 3.2.10 on 2023-07-05 13:32

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='User',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('username', models.CharField(max_length=50)),
                ('email', models.EmailField(max_length=254, unique=True)),
            ],
        ),
    ]

05-02-执行数据库模型迁移

接上一步,用下面的三条语句实现执行数据库模型的迁移。

CD E:\Python_project\P_001\myshop-test\myshop\
E:
manage.py migrate

在这里插入图片描述

06-查看数据库

可以用工具“opendbviewer”查看数据库。
这个工具的百度网盘下载链接如下:
https://pan.baidu.com/s/19VxBiWHPmuJ_ApVgI3bqhA?pwd=e1te
安装完成后,连接数据库后就可以查看数据库了~如下图所示:
在这里插入图片描述

07-向数据库写入数据并查看数据

在路径:E:\Python_project\P_001\myshop-test\myshop\下新建文件 sql_test.py(与manage.py平级):
在这里插入图片描述
然后写入下面的代码:

import os
import django

# 设置Dango运行时需要的环境变量DJANGO_SETTINGS_MODULE
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')

# 加载Django的设置
django.setup()

# 导入模型
from app1.models import User

# 创建一个用户
user = User(username='john', email='john@example.com')
user.save()

对于语句os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')的解释:
当我们在Python中运行Django项目时,需要告诉Django要使用的项目设置(settings)。这些设置包括数据库配置、应用程序列表、静态文件路径等等。
怎么告诉Django项目的设置(settings)呢?通过环境变量 DJANGO_SETTINGS_MODULE 告诉。
在这里,os.environ.setdefault(key, value)是设置一个环境变量的方法。它接受两个参数:key是要设置的环境变量的名称,value是要为该环境变量设置的值。
'DJANGO_SETTINGS_MODULE'刚才已经说了它的作用,'myshop.settings'是设置变量的值,表示Django应该使用myshop项目中的settings.py文件作为项目的设置。

执行上面的代码即可向数据库写入数据,执行后我们再去看数据库的记录:
在这里插入图片描述
我们发现,在数据库shop-test的表User中已经有了一条新的记录。

我们再运行下面的代码,另外再写入一条新的记录:

import os
import django

# 设置Dango运行时需要的环境变量DJANGO_SETTINGS_MODULE
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myshop.settings')

# 加载Django的设置
django.setup()

# 导入模型
from app1.models import User

# 创建一个用户
user = User(username='suwenhao', email='2487872782.com')
user.save()

运行完成后,数据库中多新了一条新的记录:
在这里插入图片描述

附完整代码

https://pan.baidu.com/s/1mmNZyyV9lrmsTc0s1GvW1Q?pwd=i6g9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git bash 命令行反应慢、卡顿

1. 在Windows11的电脑上安装了git 后,鼠标右键打开git bash here,打开窗口缓慢,输入命令也慢的要死,如果安装git的时候选择在桌面创建图标,通过桌面图标打开也是一样的 2. 最简单的ls 命令,都要停顿半秒 3.…

m4a音频格式转换器:让音频轻松换装

大家有没有遇到这样的情况——你下载了一个很酷的音频文件,但是播放设备却说“不认识”这个格式?别担心!现在有个超级厉害的工具可以帮你解决这个问题,它就是m4a音频格式转换器!它能让你的音频文件变身,适应…

TiDB(2):TiDB架构特性

1 TiDB 整体架构 TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件和简化云上部署管理的 TiDB Operator 组件。 架构图解 1.1 TiDB Server TiDB Server 负责接收…

技术服务企业缺成本票,所得税高怎么解决?可有良策?

技术服务企业缺成本票,所得税高怎么解决?可有良策? 《税筹顾问》专注于园区招商、企业税务筹划,合理合规助力企业节税! 技术服务型企业最核心的价值就是为客户提供技术支撑,而这类型的企业在税务方面面临的…

CSRF漏洞复现

目录 CSRF产生的条件CSRF漏洞分类CSRF漏洞危害CSRF漏洞检测CSRF漏洞修复方案利用靶场CSRF-Minefield-V1.0漏洞复现 CSRF产生的条件 一、被攻击者在登陆了web网页,并且在本地生成了cookie 二、在cookie未过期的情况下,利用同一个浏览器访问了攻击者的页…

最新版Flink CDC MySQL同步Elasticsearch(一)

1.环境准备 首先我们要基于Flink CDC MySQL同步MySQL的环境基础上(flink-1.17.1、Java8、MySQL8)搭建Elasticsearch7-17-10和Kibana 7.17.10。笔者已经搭建好环境,这里不做具体演示了,如果需要Es的搭建教程情况笔者其他博客 注意…

JVM源码剖析之Java对象创建过程

关于 "Java的对象创建" 这个话题分布在各种论坛、各种帖子,文章的水平参差不齐。并且大部分仅仅是总结 "面试宝典" 的流程,小部分就是copy其他帖子,极少能看到拿源码作为论证。所以特意写下这篇文章。 版本信息如下&…

Eclipse显示层级目录结构(像IDEA一样)

有的小伙伴使用IDEA习惯了,可能进入公司里面要求使用eclipse,但是eclipse默认目录是并列显示,而不是层级显示。部分人用起来感觉十分不方便。我们可以更改一下设置。 1、打开eclipse,找到这里 2、选择PackagePresentation 3、选…

Github-提交PR指南

1. Fork你将要提交PR的repo 2. 将你fork下来的repo克隆到你的本地 git clone your_repo.git Cloning into ultralytics... remote: Enumerating objects: 8834, done. remote: Counting objects: 100% (177/177), done. remote: Compressing objects: 100% (112/112), done. …

第二步:STM32F407ZGT6资源介绍

1.1 STM32F407ZGT6资源描述 内核: 32位 高性能ARM Cortex-M4处理器 时钟:高达168M,实际还可以超屏一点点 支持FPU(浮点运算)和DSP指令 IO口: STM32F407ZGT6: 144引脚 114个IO 大部分IO口都耐5V(模拟通道除外) …

C# .NET 如何调用 SAP RFC 接口

1.分析传参结构 SAP 传参格式对应 .NET 参数格式 SAP 参数.NET 参数参数类型import(导入)——关联类型为数据元素Param单个变量参数import(导出)——关联类型为结构体Struct结构体tableTable表 下面是 SAP 对应参数类型: 2.web.config 配置 配置文件需要客户端…

win10安装pytorch GPU

我记得以前安装过深度学习库GPU版本, 需要安装cuda什么的,翻了下还真写过一篇win10安装tensorflow的文章,但是流程不止不详细,还不清晰。这次就再记录一遍 这次安装的是pytorch,这么多年似乎pytorch要逐渐统一深度学习…

【算法与数据结构】232、LeetCode用栈实现队列

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:这道题要求我们用栈模拟队列(工作上一定没人这么搞)。程序当中,pus…

spring之BeanFactory

spring之BeanFactory DefaultListableBeanFactory示例代码类继承实现结构 BeanFactory是Bean工厂,所以很明显,BeanFactory会负责创建Bean,并且提供获取Bean的API。 DefaultListableBeanFactory 在Spring源码中,BeanFactory接口存…

自定义的车牌号键盘组件

<template><view class"keyboard-wrap" v-if"kbShow"><view class"head"><view class"done" tap"done"><text class"iconfont iconxiala-"></text>关闭</view></vi…

spring boot + Apache tika 实现文档内容解析

Apache tika是Apache开源的一个文档解析工具。Apache Tika可以解析和提取一千多种不同的文件类型(如PPT、XLS和PDF)的内容和格式&#xff0c;并且Apache Tika提供了多种使用方式&#xff0c;既可以使用图形化操作页面&#xff08;tika-app&#xff09;&#xff0c;又可以独立部…

Python实现微信发送文件实例

新建Python文件&#xff1a;wx_file.py&#xff0c;代码如下 # -*- coding: utf-8 -*- # Author : CxiuM # Time : 2023-07-06 10:12 # Name : wx_operation.py"""微信群发消息"""import os import time import subprocessimport requests …

【ElasticSearch】DSL查询语法

文章目录 1、DSL查询分类2、DSL基本语法3、全文检索查询4、精确查询5、地理查询6、复合查询--相关性打分算法7、复合查询之Function Score Query8、复合查询之BooleanQuery 1、DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;…

Java版本工程项目管理系统源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

Librosa库——语音识别,语音音色识别训练及应用

很多同学以为语音识别是非常难的&#xff0c;其实并不然&#xff0c;起初我也是这么认为&#xff0c;但后来发现语音识别是最简单的&#xff0c;因为同学们可能不知道Python有一个音频处理库Librosa&#xff0c;这个库非常的强大&#xff0c;可以进行音频处理、频谱表示、幅度转…