[Django_1_2]数据库设置

时间:2022-01-24 09:32:55

Django 数据库设置

本篇将介绍Django中的数据库设置,了解模型(models,数据库中的表项设计)。

上一篇文章为:<a href="http://www.cnblogs.com/guoyunzhe/p/5778295.html", target="_blank"> Django 第一个app

选择数据库类型

Django默认使用的是SQLite,同时还支持MySQL、PostgreSQL等数据库。本篇文章中主要关注Django,所以就按照默认配置,使用SQLite。

我们看到mysite/setting.py中的DATABASE字典中的定义,这里是默认的SQLite选项:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

ENGINE字段是选择用什么数据库引擎,常见的数据库还可以用:

  • django.db.backends.postgresql -- 使用PostgreSQL
  • django.db.backends.mysql -- 使用MySQL
  • django.db.backends.oracle -- 使用Oracle

NAME字段在SQLite中是数据库文件的地址,路径内容是BASE_DIR, 'db.sqlite3',其中'db.sqlite3'是文件名,这个文件就在:

guoyunzhe:mysite guoyunzhe$ tree -L 1
.
├── db.sqlite3 --------->>>> SQLite数据库文件
├── manage.py
├── mysite
└── polls 2 directories, 2 files

如果使用其他数据库,还需要提供:USERPASSWORDHOST等内容。

在编辑setting.py时,可以设置时区:TIME_ZONE = 'Asia/Shanghai'

另外我们看一看INSTALLED_APPS字段,并解释一下默认的这行内容:

  • django.contrib.admin -->> admin站点,我们会在之后提起。
  • django.contrib.auth -->> 一个认证系统。
  • django.contrib.contenttypes -->> 一个用于contenttypes的框架。
  • django.contrib.sessions -->> 一个会话框架。
  • django.contrib.messages -->> 一个消息框架。
  • django.contrib.staticfiles -->> 一个静态文件管理框架。

在前面,我们执行python3 manage.py migrate 命令时,Django会查看INSTALLED_APPS中的设置,并且根据其中的模型对数据库中的内容作出修改。

关于模型,将在下面介绍。

创建模型

现在,我们创建自己的模型,也就是数据库设计。

在<a href="http://www.cnblogs.com/guoyunzhe/p/5778295.html", target="_blank">上篇文章中创建的应用polls中,创建自己的模型。

编辑文件polls/models.py

from django.db import models
from django.utils import timezone
import datetime class Question(models.Model): # Question表
question_text = models.CharField(max_length=200) # 列question_text, 最大长度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.db.models.Model的子类,都有一些我们定义的变量,这些变量称为域(Field)

每个域都被定义为某种Field类型的数据,如:

  • CharField 代表字符类型, 这里还设置了最大长度为200;在数据库中可以表达为 vchar(200)
  • DateTimeField 代表时间类型。
  • IntegerField 代表整形。
  • 还有其他类型的域,比如TextField等,使用方法类似,以后看到的时候再详细说就行。

注意还有一个:在Choice模型中定义了一个ForeignKey, 这告诉Django每一个Choice都对应了唯一的一个Question。Django支持所有数据库关系,包括:many-to-one、many-to-many 和one-to-one。

激活模型

通过以上的改变,Django可以做一下的操作:

  • 为我们的polls应用在数据库中创建相关的表。
  • 为Choice和Question模型,创建Python编写的数据操作API。

但是我们首先需要告诉项目,polls应用已经被安装了。

编辑mysite/setting.py(没错就是刚才打看的那个),我们需要改一下INSTALLED_APPS字段。

INSTALLED_APPS = [
'polls.apps.PollsConfig', # --->>> 增加的polls应用
# ......
]

好奇心比较严重,我们查看下这个路径中的这个方法,在polls/apps.py中:

from django.apps import AppConfig

class PollsConfig(AppConfig):
name = 'polls'

所以相当于在INSTALLED_APPS这个列表中增加了一个'polls'。看过别的教程有直接写'polls'的,是一样的意思。于是现在Django知道我们安装了polls应用。

下面做下一件事,使用命令python3 manage.py makemigrations polls

[Django_1_2]数据库设置

命令** makemigrations**的意思是,告诉Django你对项目的模型作出了一些改变,并且你想把这些改变生成相应的接口存储起来。

可以看到,对模型的改变存储在了polls/migrations/0001_initial.py中,这些是Django自动生成的,如果想手动修改,就要改这个文件。

下面这个命令将允许你查看Django自动生成的SQL语句,用于将上面的改变应用于数据库中,python3 manage.py sqlmigrate polls 0001

[Django_1_2]数据库设置

上面的GIF是使用默认SQLite生成的,使用不同的数据库引擎生成的语句不同。

这个命令只是生成SQL语句给你看看,不会执行打印在屏幕中的语句。如果需要执行,需要执行命令python3 manage.py migrate

[Django_1_2]数据库设置

在执行这条命令之前,可以使用check来检查作出的改变有没有问题:

[Django_1_2]数据库设置

使用数据API

通过shell命令可以进入交互式解释器界面中:

[Django_1_2]数据库设置

进入解释器之后,首先需要导入我们刚才建立的两个模型:from polls.models import Question, Choice

然后可以使用一系列Django为我们生成的API,具体介绍我们在下一篇博文中仔细看一看。

[Django_1_2]数据库设置的更多相关文章

  1. Mariadb数据库设置及操作 一主多从 备份还原(实测笔记)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 数据库版本信息 : 10.1.20- ...

  2. golang github&period;com&sol;go-sql-driver&sol;mysql 遇到的数据库&comma;设置库设计不合理的解决方法

    golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法,查询中报了以下这个错 Scan error on column index 2: ...

  3. Django数据库设置

    设置数据库,创建您的第一个模型,得到一个简单介绍 Django的自动生成管理网站. 数据库设置 现在,打开 mysite / settings.py . 这是一个普通的Python模块 模块级变量代表 ...

  4. 实例讲解Oracle数据库设置默认表空间问题

    实例讲解Oracle数据库设置默认表空间问题   实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...

  5. ThinkPHP3&period;2&period;3新特性之:数据库设置

    ThinkPHP3.2.3版本数据库驱动采用PDO完全重写,配置和使用上面也比之前版本更加灵活和强大,我们来了解下如何使用. 首先,3.2.3的数据库配置信息有所调整,完整的数据库设置包括: /* 数 ...

  6. SQL Server数据库设置自动备份策略

    一. 简单介绍 SQL Server自带的维护计划是一个非常有用的维护工具,能够完成大部分的数据库的维护任务. 数据库的备份也是日常工作中非常重要的一个环节.备份的方法非常的多. 今天给大家介绍最简单 ...

  7. Mysql 数据库设置三大范式 数据库五大约束 数据库基础配置

    数据库设置三大范式 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足第一范式. 第一范式的合理遵循需要根据系统给的实际需求 ...

  8. Oracle数据库设置为归档模式的操作方法

    Oracle归档模式非常非常重要!对于有些数据库刚装好后可能是非归档模式,这是很危险的!为了安全起见,一定要谨记:对于Oracle数据库,一定要设置为归档模式,尤其是生产库,只有这样才能实现数据库的有 ...

  9. Flask之数据库设置

    4 数据库 知识点 Flask-SQLALchemy安装 连接数据库 使用数据库 数据库迁移 邮件扩展 4.1 数据库的设置 Web应用中普遍使用的是关系模型的数据库,关系型数据库把所有的数据都存储在 ...

随机推荐

  1. Linq-分组统计

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  2. 在Linux系统中如何设置APACHE服务器里的后台页面只允许某个IP地址访问

    补充资料 本网络中使用LINUX服务器,web服务器是由APACHE搭建,IP地址为192.168.1.5,后台页面为/admin/login.jsp . 如何设置后台页面LOGIN.JSP只允许19 ...

  3. Android中Bitmap&comma; Drawable&comma; Byte&comma;ID之间的转化

    Android中Bitmap, Drawable, Byte,ID之间的转化 1.  Bitmap 转化为 byte ByteArrayOutputStream out = new ByteArray ...

  4. (转载)使用ADOConnet&period;BeginTrans后&comma;出现错误提示&colon;无法在此会话中启动更多的事务?

    Q: 三层结构,在服务器端使用adoconnection连接到sqlserver2000,然后想在 datasetprovider的beforupdaterecord中使用语句: try adocon ...

  5. UVA 11426 GCD - Extreme &lpar;II&rpar; 欧拉函数

    分析:枚举每个数的贡献,欧拉函数筛法 #include <cstdio> #include <iostream> #include <ctime> #include ...

  6. C&num; 获取当前应用程序的绝对路径支持asp&period;net

      Asp.net在类库中获取某文件的绝对路径.这个问题在初学的时候就经常碰到过,经常是查了忘,忘了查.浪费了大量的今天专门写个文章,以后到这里查.有时间顺便记得研究下这个东西. 在主程序目录就不说了 ...

  7. Servlet基础(工作原理、生命周期)

    (一)Servlet开发与配置 1.1 开发步骤 1)编写java类,继承HttpServlet类 2)重新doGet和doPost方法 3)Servlet程序交给tomcat服务器运行! 配置信息: ...

  8. datatables行编辑中,某个字段用户显示和用于行编辑名称不同时的处理。

    比如tag这个字段,对应服务端bean的tag,但是在页面显示时需要为String类型的tagName,那么在行编辑时可以用以下的方式处理.

  9. HashMap底层实现原理

    HashMap底层实现 HashMap底层数据结构如下图,HashMap由“hash函数+数组+单链表”3个要素构成 通过写一个迷你版的HashMap来深刻理解 MyMap接口,定义一个接口,对外暴露 ...

  10. 解救小哈——bfs广搜

    问题描述: 小哈去玩迷宫,结果迷路了,小哼去救小哈.迷宫由n行m列的单元格组成(n和m都小于等于50),每个单元格要么是空地,要么是障碍物. 问题:帮小哼找到一条从迷宫的起点通往小哈所在位置的最短路径 ...