Python Web开发(四):从零开始创建数据库和表

简介: Python Web开发(四):从零开始创建数据库和表

一、后端开发离不开数据库
真实的系统 就应该返回真实的 订单信息。 那么服务端从哪里获取真实的订单信息呢? 像 订单信息 这些数据通常就是保存在数据库里面的。

后端开发基本都需要操作数据,包括数据的 存储、查询、修改、删除。
通常,这些都是通过数据库来完成的。目前业界最广泛使用的数据库还是:关系型数据库。
关系型数据库系统,常用的开源数据库有 mysql 和 postgresql。建议大家实际工作中使用的时候,使用上面这两种。
但是上面这些数据库,都需要我们安装数据库服务系统 和 客户端库,比较麻烦,现在我们先使用另一种更简单的 数据库 sqlite。sqlite 没有 独立的数据库服务进程,数据操作被做成库直接供应用程序调用。 Django中可以直接使用,无须先搭建数据服务。
后面我们要使用mysql 等其他数据库 只需修改一些配置就可以了。
我们可以看到setting文件中,我们就是使用的splite数据库:
在这里插入图片描述

1.创建数据库
项目中数据库的配置在 bysms/settings.py 中,这里:

Database

https://docs.djangoproject.com/en/2.0/ref/settings/#databases

DATABASES = {

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

}
大家可以发现,我们使用命令创建的项目, 缺省就是使用 sqlite。 而且对于的数据库文件,缺省的文件名是 db.sqlite3 , 就在项目的根目录下面:
在这里插入图片描述
虽然,我们已经存在这个文件啦,但是其中并没有写入一些表格之类的数据,所以说我们还需要执行命令,创建其中的数据。
首先我们需要创建数据库,执行如下命令:

python manage.py migrate
就会在 项目的根目录下面 生成一个配置文件中指定的数据库文件 db.sqlite3。并且 会在其中创建一些表。
在这里插入图片描述

2.下载数据库工具sqlite studio
要知道里面是什么样子的文件,我们需要下载sqlite 数据库工具:sqlitestudio(点击蓝色字体进入链接)
在这里插入图片描述
下载后解压即可, 运行该工具, 然后打开上面的 文件 db.sqlite3
将我们的数据库文件添加到sqlitestudio中,打开。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这些表都是 Django缺省设置中, 需要的一些 基本表。
包括: 用户表 auth_user, 登录会话表 django_session 等等。
在这里插入图片描述

二、什么是 ORM
Django 里面, 数据库表的操作,包括 表的定义、表中数据的增删改查,都可以通过 Model 类型的对象进行的。
通常,在Django中:

定义一张数据库的表 就是定义一个继承自 django.db.models.Model 的类

定义该表中的字段(列), 就是定义该类里面的一些属性

类的方法就是对该表中数据的处理方法,包括 数据的增删改查

这样,开发者对数据库的访问,从原来的使用底层的 sql 语句,变成 面向对象的开发,通过一系列对象的类定义 和方法调用就可以 操作数据库。

这样做:
首先 极大的简化了我们应用中的数据库开发,因为无需使用sql语句操作数据库了, 提高了开发的效率;
其次 屏蔽了 不同的数据库访问的底层细节,基本做到了 开发好代码后,如果要换数据库,几乎不需要改代码, 修改几个配置项就可以了。
这种 通过 对象 操作数据库 的方法 被称之为 ORM (object relational mapping),下面我们就来看怎样使用。

三、定义我们的数据库表
我们开发系统,需要定义我们需要的数据库表。

1.创建common应用目录
首先,我们再创建一个名为common的应用目录, 里面存放我们项目需要的一些公共的表的定义。
进入项目根目录,执行下面的命令。

python manage.py startapp common
在这里插入图片描述
在这里插入图片描述
就会创建一个目录名为 common, 对应 一个名为 common 的app,里面包含了如下自动生成的文件。

common/

__init__.py
admin.py
apps.py
migrations/
    __init__.py
models.py
tests.py
views.py

Django是通过定义类来定义数据库表的。所以,我们要定义数据库的表,无需执行sql语句,只需要在app目录下面 定义特殊的类就可以了。数据库表的定义,一般是放在app目录中的 models.py里面的。

2.修改业务表
打开 common/models.py,发现里面是空的,因为我们还没有定义我们的业务所需要的表。
我们修改它,加入如下内容:

from django.db import models
class Customer(models.Model):

# 客户名称
name = models.CharField(max_length=200)
# 联系电话
phonenumber = models.CharField(max_length=200)
# 地址
address = models.CharField(max_length=200)

在这里插入图片描述

这个 Customer 类继承自 django.db.models.Model, 就是用来定义数据库表的。
里面的 name、phonenumber、address 是该表的3个字段。
定义表中的字段 就是定义一些静态属性,这些属性是 django.db.models 里面的各种 Field 对象,对应不同类型的字段。
比如这里的3个字段 都是 CharField 对象,对应 varchar类型的数据库字段。
后面的参数 max_length 指明了该 varchar字段的 最大长度。
Djanog 有很多字段对象类型, 对应不同的类型的数据库字段。

四、创建数据库表
定义好表以后,我们怎么真正去创建数据库表呢?

1.配置内容
首先我们需要告诉Django: 我们的 common 应用中 需要你关注, 因为其中包含了 数据库Model的定义。
在项目的配置文件 settings.py 中, INSTALLED_APPS 配置项 加入如下内容:

INSTALLED_APPS = [

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

# 加入下面这行
'common.apps.CommonConfig',

]
‘common.apps.CommonConfig’ 告诉 Django , CommonConfig 是 common/apps.py 文件中定义的一个应用配置的类。
是这样的

class CommonConfig(AppConfig):

name = 'common'

在这里插入图片描述
CommonConfig 是 AppConfig的 子类, 就表示这个是应用的配置类。
这里 name = ‘common’ , name 是用来定义 应用的python模块路径的。 这里就是说 应用 模块路径为 common 。

2.执行创建命令
Django知道了我们的 common 应用, 我们可以在项目根目录下执行命令:

python manage.py makemigrations common
得到如下结果:
在这里插入图片描述
这个命令,告诉Django , 去看看common这个app里面的models.py ,我们已经修改了数据定义, 你现在去产生相应的更新脚本。
执行一下,会发现在 common\migrations 目录下面出现了0001_initial.py, 这个脚本就是相应要进行的数据库操作代码。
在这里插入图片描述

3.重新定义数据库
随即,执行如下命令,也就是我们之前定义数据库的命令:

python manage.py migrate
在这里插入图片描述
就真正去数据库创建表了。
用 sqlitestudio 查看数据库,发现创建了一张名为 common_customer的表,如下:
在这里插入图片描述

其中 3 个字段就是我们上面定义的 Customer 类里面的 name、phonenumber、address 属性名。多出来的 id 字段是该表的主键, 是Django自动帮我们添加的。

4.添加空表
在model里面再加入qq,使其为空表:
在这里插入图片描述
重新执行创建命令:

python manage.py makemigrations common
在这里插入图片描述
在这里插入图片描述
最后在执行migrate:
在这里插入图片描述
得到我么的qq新表:
在这里插入图片描述

五、Django管理员设置
1.创建管理员账号
Django提供了一个管理员操作界面可以方便的 添加、修改、删除你定义的 model 表数据。
首先,我们需要创建 一个超级管理员账号。进入到项目的根目录,执行如下命令,依次输入你要创建的管理员的 登录名、email、密码。

d:\projects\bysms>python manage.py createsuperuser
Username (leave blank to use 'byhy'): byhy
Email address: byhy@163.com
Password:
Password (again):
Superuser created successfully.
在这里插入图片描述
创建后进入我们的数据库工具,打开user,会发现我们刚才输入的账号和密码,在这里密码是进行加密的:
在这里插入图片描述
然后我们需要修改应用里面的 管理员 配置文件 common/admin.py,注册我们定义的model类。这样Django才会知道。

from django.contrib import admin

from .models import Customer

admin.site.register(Customer)
然后需要重新启动一下服务器,这个地方大家如果不太懂的话可以看本专栏的第二节课 :Python Web开发二:Django的安装和运行
在这里插入图片描述

2.访问登录网站
好了,现在就可以访问 http://127.0.0.1:8080/admin/ ,输入刚才注册的用户密码登录。
在这里插入图片描述

登录后可以看到如下界面。这里面是目前系统中可以修改的表。
在这里插入图片描述

3.添加用户
然后我们可以点击添加user,去添加新的用户:
在这里插入图片描述
此时打开数据库,我们就会发现,又给我们增添了一条用户信息:
在这里插入图片描述

4.添加功能
我们看到我们的界面中,现在只有两个功能,没有customer,
在这里插入图片描述
如果想要添加的话,需要将代码加入到models文件中:

from django.contrib import admin
admin.site.register(Customer)
在这里插入图片描述
此时,如果服务器终止了,我们需要重启服务器,然后刷新界面,就会得到我们下面的新的功能:在这里插入图片描述

5.添加客户
同时我们也可以添加客户:
在这里插入图片描述
此时在我们的数据库中,我们就可以看到我们新添加的客户信息:
在这里插入图片描述
可以说是非常的方便,如果你也是一步一步做下来的话,真的会非常有成就感嗷~

目录
相关文章
|
5天前
|
算法 测试技术 开发者
性能优化与代码审查:提升Python开发效率
【10月更文挑战第12天】本文探讨了Python开发中性能优化和代码审查的重要性,介绍了选择合适数据结构、使用生成器、避免全局变量等性能优化技巧,以及遵守编码规范、使用静态代码分析工具、编写单元测试等代码审查方法,旨在帮助开发者提升开发效率和代码质量。
16 5
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3
|
2天前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
2天前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
10 1
|
5天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
13 4
|
6天前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
17 4
|
7天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
18 1
|
11天前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接22.bijius.com
自动化数据预处理:使用Python库(如Pandas)自动清洗、转换和准备数据,为机器学习模型提供高质量输入。 实时数据处理:集成Apache Kafka或Amazon Kinesis等流处理系统,实现实时数据更新和分析。
|
10天前
|
网络协议 Python
使用Python开发简单的聊天应用
使用Python开发简单的聊天应用
18 0
|
11天前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。