Django--数据库连接

数据库配置

 
  打开mysite/settings.py配置文件,这是整个Django项目的设置中心。Django默认使用SQLite3数据库,因为Python原生支持SQLite3数据库,所以你无须安装任何程序,就可以直接使用它。
 
下面是默认的数据库配置:

DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3","NAME": BASE_DIR / "db.sqlite3",}
}

 
  如果你想使用其他的数据库,请先安装相应的数据库操作模块,并将settings文件中DATABASES位置的’default’字典进行相应的修改,用于连接你的数据库。其中:

  • ENGINE(引擎):可以是django.db.backends.sqlite3、django.db.backends.postgresql、django.db.backends.mysql、django.db.backends.oracle,当然其它的也行。
  • NAME(数据库名称):类似Mysql数据库管理系统中用于保存项目内容的数据库的名字。如果你使用的是默认的SQLite3,那么数据库将作为一个文件将存放在你的本地机器内,此时的NAME应该是这个文件的完整绝对路径包括文件名,默认情况下该文件储存在你的项目根目录下。

注意

  • 在使用非SQLite3数据库时,请务必预先在数据库管理系统的提示符交互模式下创建数据库,你可以使用命令:CREATE DATABASE database_name;。Django不会自动帮你做这一步工作。
  • 确保你在settings文件中提供的数据库用户具有创建数据库表的权限,因为在接下来的教程中,我们需要自动创建一个test数据表。(在实际项目中也需要确认这一条要求。)
  • 在修改settings文件时,请顺便将TIME_ZONE设置为国内所在的时区Asia/Shanghai,这样显示的就是我们北京时间。
     
      同时,请注意settings文件中顶部的INSTALLED_APPS设置项。它列出了所有的项目中被激活的Django应用(app)。你必须将你自己创建的app注册在这里。每个应用可以被多个项目使用,并且可以打包和分发给其他人在他们的项目中使用。
     

默认情况,INSTALLED_APPS中会自动包含下列条目,它们都是Django自动生成的:

  • django.contrib.admin:admin管理后台站点
  • django.contrib.auth:身份认证系统
  • django.contrib.contenttypes:内容类型框架
  • django.contrib.sessions:会话框架
  • django.contrib.messages:消息框架
  • django.contrib.staticfiles:静态文件管理框架
     
      上面的那些应用会默认被启动,并且也需要建立一些数据库表,所以在使用它们之前我们要在数据库中创建这些表。使用下面的命令创建数据表:

python manage.py migrate

 
  migrate命令将遍历INSTALLED_APPS设置中的所有项目,在数据库中创建对应的表,并打印出每一条动作信息。如果你感兴趣,可以在你的数据库命令行下输入:\dt (PostgreSQL)、 SHOW TABLES;(MySQL)或 .schema(SQLite3) 来列出 Django 所创建的表。

创建模型

现在,我们来定义模型model,模型本质上就是数据库表的布局,再附加一些元数据。
 
Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类Class,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作,这就是所谓的ORM。Django通过ORM对数据库进行操作,奉行代码优先的理念,将Python程序员和数据库管理员进行分工解耦。

from django.db import modelsclass Question(models.Model):question_text = models.CharField(max_length=200)pub_date = models.DateTimeField('date published')class Choice(models.Model):question = models.ForeignKey(Question, on_delete=models.CASCADE)choice_text = models.CharField(max_length=200)votes = models.IntegerField(default=0)

上面的代码看着有点少,其实包含了大量的信息,据此,Django会做下面两件事:

  • 创建该app对应的数据库表结构
  • 为Question和Choice对象创建基于Python的数据库访问API

要将应用添加到项目中,需要在INSTALLED_APPS设置中增加指向该应用的配置文件的链接。我们需要在INSTALLED_APPS中,将该路径添加进去(字符串格式):

# mysite/settings.pyINSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

实际上,在多数情况下,我们简写成项目名就可以了.

INSTALLED_APPS = ["polls""django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.staticfiles",
]

 
  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷刷题 前缀和与差分-[P2004]领地选择(C++)

题目描述 作为在虚拟世界里统帅千军万马的领袖,小 Z 认为天时、地利、人和三者是缺一不可的,所以,谨慎地选择首都的位置对于小 Z 来说是非常重要的。 首都被认为是一个占地 CC 的正方形。小 Z 希望你寻找到一个合适的位置,使得首…

人脸识别:Arcface--loss+code

之前只接触过传统方法的人脸识别算法,本以为基于深度学习的方法会使用对比损失之类的函数进行训练,但是Arcface算法基于softmax进行了创新,本文未深究其详细的loss公式原理,在大致明白其方向下,运行了代码,…

06-kafka及异步通知文章上下架

kafka及异步通知文章上下架 1)自媒体文章上下架 需求分析 2)kafka概述 消息中间件对比 特性ActiveMQRabbitMQRocketMQKafka开发语言javaerlangjavascala单机吞吐量万级万级10万级100万级时效性msusmsms级以内可用性高(主从)高(主从&#…

spring中各种bean加载顺序

具体加载顺序按照罗列的顺序 XXXAware ApplicationContextAware、EnvironmentAware、BeanFactoryAware、BeanClassLoaderAware 顾名思义,用于获取对应的对象,需要在实体类中声明对应的对象且当前类为普通类能被注入。 InitializingBean void afterProp…

pyaudio webrtcvad实现实时录制语音加VAD检测没人说话自动停止录制

vad检测没人说话超过2秒就自动停止录制并保存前面有人说话的音频文件 pip install webrtcvad代码: import pyaudio import wave import time import webrtcvadCHUNK = 320 # 20ms 的语音帧 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 WAVE_OUTPUT_FILENAME

【leetcode面试经典150题】7.买卖股票的最佳时机(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

下载页面上的视频

引言:有些页面上的视频可以直接右键另存为或者F12检索元素找到视频地址打开后保存,但有些视频页面是转码后的视频,不能直接另存为视频格式,可以参考下本方法 以该页面视频为例:加载中...点击查看详情https://wx.vzan.c…

WindowsPowerShell安装配置Vim的折腾记录

说明 vim一直以来都被称为编辑器之神一样的存在。但用不用vim完全取决于你自己,但是作为一个学计算机的同学来说,免不了会和Linux打交道,而大部分的Linux操作系统都预装了vim作为编辑器,如果是简单的任务,其实vim只要会…

leetcode.19. 删除链表的倒数第 N 个结点

题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 思路 先遍历一遍得到链表的长度l,在从头开始删除第l-n个节点即可 实现 class Solution {public ListNode removeNt…

Java_自定义实体类的列表List<T>调用remove()失败讲解

示例1 前提: 新建一个主类Demo1。 需求: 在一个列表中有三条String的数据,想要使用remove(Object o)删掉其中一条。 结果: remove(Object o)成功把数据删掉。 示例2 前提: 新建一个自定义实体类DataExample和一个主…

爬取学习强国视频小示例

因为需要爬取的视频数量并不是很大,总共需要将131个视频下载下来,所以就直接去手动找找视频的地址和名称保存下来的。由于页面是动态加载的,所以我们无法在网站源码中直接找到视频的超链接。设想是可以用Selenium模拟浏览器点击进行动态加载获…

uni-app如何实现高性能

这篇文章主要讲解uni-app如何实现高性能的问题? 什么是uni-app? 简单说一下什么是uni-app,uni-app是继承自vue.js,对vue做了轻度定制,并且实现了完整的组件化开发,并且支持多端发布的一种架构&#xff0c…

电脑上音频太多,播放速度又不一致,如何批量调节音频播放速度?

批量调节音频速度是现代音频处理中的一个重要环节,尤其在音乐制作、电影剪辑、有声书制作等领域,它能够帮助制作者快速高效地调整音频的播放速度,从而满足特定的制作需求。本文将详细介绍批量调节音频速度的方法、技巧和注意事项,…

移动Web学习04-移动端订单结算页PC端个人中心页面

5、电商结算页面案例 css body{background-color: #F2F2F2; } * {box-sizing: border-box;margin: 0;padding: 0; }.main{padding: 12px 11px 80px; }.pay{display: flex;height: 80px;background-color: #fff;bottom: 0;width: 100%;border-top: 1px solid #ededed;position:…

04-自媒体文章-自动审核

自媒体文章-自动审核 1)自媒体文章自动审核流程 1 自媒体端发布文章后,开始审核文章 2 审核的主要是审核文章的内容(文本内容和图片) 3 借助第三方提供的接口审核文本 4 借助第三方提供的接口审核图片,由于图片存储到minIO中&…

探索 AWK:Linux 下的文本处理

打印特定字段 打印出每行的第三个字段 # cat file.txt 1 2 3 4 5 10 20 30 40 50# awk {print $3} file.txt 3 30文本转换和格式化 给第3行都加10 # awk {$3$310; print $1, $2, $3, $4, $5} file.txt 1 2 13 4 5 10 20 40 40 50数据分析 累加第一列的和 # awk {print $1…

JAVA毕业设计132—基于Java+Springboot+Vue的自习室座位预约小程序管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的自习室座位预约小程序管理系统(源代码数据库)132 一、系统介绍 本项目前后端分离带小程序,分为管理员、用户两种角色 1、用户: 注…

B3799 [NICA #1] 序列

[B3799 NICA #1] 序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 发现两个操作跟顺序无关&#xff0c;最大子序列和就是所有正数之和。 对数组进行排序&#xff0c;之后求前缀和。用 n o w now now记录操作一加了多少。找到第一个 a i n o w < 0 a_i now \lt 0 ai​…

【Arthas案例】某应用依赖两个GAV-classifier不同的snakeyaml.jar,引起NoSuchMethodError

多个不同的GAV-classifier依赖冲突&#xff0c;引起NoSuchMethodError Maven依赖的三坐标体系GAV(G-groupId&#xff0c;A-artifactId&#xff0c;V-version) classifier通常用于区分从同一POM构建的具有不同内容的构件物&#xff08;artifact&#xff09;。它是可选的&#xf…

泰坦尼克号幸存者数据分析

泰坦尼克号幸存者数据分析 1、泰坦尼克号数据集2、数据集加载与概览3、泰坦尼克号幸存者数据分析4、哪些人可能成为幸存者&#xff1f; 1、泰坦尼克号数据集 泰坦尼克号的沉没是世界上最严重的海难事故之一&#xff0c;造成了大量的人员伤亡。这是一艘号称当时世界上最大的邮轮…