被解放的姜戈02 庄园疑云

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!   上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App。

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

 

上一回说到,姜戈的江湖初体验:如何架设服务器,如何回复http请求,如何创建App。这一回,我们要走入糖果庄园。

 

数据库是一所大庄园,藏着各种宝贝。一个没有数据库的网站,所能提供的功能会非常有限。

 

为了找到心爱的人,姜戈决定一探这神秘的糖果庄园。

 

连接数据库

Django为多种数据库后台提供了统一的调用API。根据需求不同,Django可以选择不同的数据库后台。MySQL算是最常用的数据库。我们这里将Django和MySQL连接。

 

在Linux终端下启动mysql:

$mysql -u root -p

 

在MySQL中创立Django项目的数据库:

mysql> CREATE DATABASE villa DEFAULT CHARSET=utf8;

这里使用utf8作为默认字符集,以便支持中文。

 

在MySQL中为Django项目创立用户,并授予相关权限:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON villa.* TO 'vamei'@'localhost' IDENTIFIED BY 'vameiisgood';

 

在settings.py中,将DATABASES对象更改为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'villa',
        'USER': 'vamei',
        'PASSWORD': 'vameiisgood',
        'HOST':'localhost',
        'PORT':'3306',
    }
}

后台类型为mysql。上面包含数据库名称和用户的信息,它们与MySQL中对应数据库和用户的设置相同。Django根据这一设置,与MySQL中相应的数据库和用户连接起来。此后,Django就可以在数据库中读写了。

 

姜戈略一迟疑,旋即走入了庄园的大门。

 

创立模型

MySQL是关系型数据库。但在Django的帮助下,我们不用直接编写SQL语句。Django将关系型的表(table)转换成为一个类(class)。而每个记录(record)是该类下的一个对象(object)。我们可以使用基于对象的方法,来操纵关系型的MySQL数据库。

 

在传统的MySQL中,数据模型是表。在Django下,一个表为一个类。表的每一列是该类的一个属性。在models.py中,我们创建一个只有一列的表,即只有一个属性的类:

from django.db import models

class Character(models.Model):
    name = models.CharField(max_length=200)
    def __unicode__(self):
        return self.name

类Character定义了数据模型,它需要继承自models.Model。在MySQL中,这个类实际上是一个表。表只有一列,为name。可以看到,name属性是字符类型,最大长度为200。

类Character有一个__unicode__()方法,用来说明对象的字符表达方式。如果是Python 3,定义__str__()方法,实现相同的功能。

 

命令Django同步数据库。Django根据models.py中描述的数据模型,在MySQL中真正的创建各个关系表:

$python manage.py syncdb

 

同步数据库后,Django将建立相关的MySQL表格,并要求你创建一个超级用户:

 

Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table west_character

 

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'tommy'): vamei
Email address: vamei@vamei.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

 

 数据模型建立了。打开MySQL命令行:

$mysql -u vamei -p 

 

查看数据模型:

USE villa;
SHOW TABLES;
SHOW COLUMNS FROM west_character;

 

最后一个命令返回Character类的对应表格:

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(200) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

 可以看到,Django还自动增加了一个id列,作为记录的主键(Primary Key)。

 

这富丽堂皇的别墅中,姜戈隐隐闻到凶险的味道。

 

显示数据

数据模型虽然建立了,但还没有数据输入。为了简便,我们手动添加记录。打开MySQL命令行,并切换到相应数据库。添加记录:

INSERT INTO west_character (name) Values ('Vamei');
INSERT INTO west_character (name) Values ('Django');
INSERT INTO west_character (name) Values ('John');

查看记录:

 SELECT * FROM west_character;

可以看到,三个名字已经录入数据库。

 

下面我们从数据库中取出数据,并返回给http请求。在west/views.py中,添加视图。对于对应的请求,我们将从数据库中读取所有的记录,然后返回给客户端:

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from west.models import Character

def staff(request):
    staff_list = Character.objects.all()
    staff_str  = map(str, staff_list)
    return HttpResponse("<p>" + ' '.join(staff_str) + "</p>")

可以看到,我们从west.models中引入了Character类。通过操作该类,我们可以读取表格中的记录

 

为了让http请求能找到上面的程序,在west/urls.py增加url导航:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^staff/','west.views.staff'),
)

 

运行服务器。在浏览器中输入URL:

127.0.0.1:8000/west/staff

查看效果:

 

从数据库读出数据,显示在页面

 

“我心爱的人,原来你在这里。” 姜戈强自镇定,嘴角忍不住颤动。

 

总结

Django使用类和对象接口,来操纵底层的数据库。

有了数据库,就有了站点内容的大本营。

 

姜戈,风雨欲来。

 

欢迎阅读“被解放的姜戈”系列文章。

 

 

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
运维 监控
运维自动化:解放双手,提升效率
【8月更文挑战第20天】在数字化时代,运维工作的重要性日益凸显。然而,传统的运维方式往往需要大量的人力投入,且容易出错。本文将探讨如何通过运维自动化来解放双手,提升工作效率。我们将从运维自动化的概念、优势、实施步骤以及注意事项等方面进行详细阐述。
|
16天前
|
存储 监控 数据可视化
必看!J 人电商团队圣诞冲刺,哪 6 款办公软件是工作学习效率的神器?
随着圣诞节临近,电商零售行业迎来购物狂欢。高效的团队协作和个人学习效率是关键。本文推荐6款可视化团队协作软件:板栗看板、Asana、Miro、monday.com、Wrike和Notion。这些工具能直观呈现工作流程,促进沟通与协作,提升工作效率。板栗看板任务清晰,Asana规划细致,Miro创意无限,monday.com自动化高效,Wrike资源管理精准,Notion一体化便捷。选择合适的工具,助力团队在圣诞季取得佳绩。
58 1
|
1月前
|
存储 数据可视化 搜索推荐
教育团队协作效率飙升,六款软件究竟在哪?
教育教培行业需高效管理学生作业以提升教学质量。为此,J人主导的教育团队可通过六款可视化团队协作办公软件优化作业管理流程:板栗看板、Notion、ClickUp、Airtable、Slack。这些软件分别在作业流程呈现、任务分配、资源整合、沟通协作及数据分析等方面展现出色,有助于构建条理化、个性化的作业管理体系,满足教育团队的高效管理需求。
46 3
|
29天前
|
数据可视化 数据挖掘 项目管理
从头到尾掌控项目,了解全流程协作的力量
在现代企业中,全流程协作理念通过从任务发起至结果交付的全生命周期透明化、标准化和高效化,打破部门、团队和工具间的壁垒,提高团队透明度,打破时空限制,降低跨部门沟通成本,赋能团队持续优化。
|
2月前
|
监控 数据可视化 搜索推荐
轻松搞定项目管理!用对在线项目管理工具助你生产力翻倍!
在线项目管理通过互联网平台和相关软件工具,打破时空限制,实现项目全过程的高效管理。本文介绍了五款在线项目管理工具:板栗看板、MeisterTask、Slack、Microsoft Project 和 ClickUp,分别适用于不同场景和需求,如直观可视化、沟通协作、大型复杂项目和高度自定义等。
|
2月前
|
存储 数据可视化 数据挖掘
高效电商运营的秘密:从繁琐中解放,专注创收
电商运营工作繁琐且重复,容易分散精力,影响创收效率。借助 Leangoo,可实现任务清晰化管理、时间节点精准把控和任务进展高效追踪。例如,通过看板管理“双11活动复盘”,覆盖数据汇总、问题分析和优化建议,确保任务清晰透明。Leangoo 帮助团队从琐碎中解放,专注创收与创新,是电商运营提效的得力工具。
|
7月前
|
运维 监控 安全
自动化运维:解放双手,提升效率
【6月更文挑战第19天】本文将深入探讨自动化运维的重要性和优势,以及如何实现自动化运维。我们将从自动化运维的定义开始,然后讨论它的优势,包括提高效率、减少错误、节省成本等。接下来,我们将详细介绍如何实现自动化运维,包括选择合适的工具和技术、设计自动化流程、测试和优化等步骤。最后,我们将通过一个实际案例来展示自动化运维的实施过程和效果。
|
运维 监控 Cloud Native
运维自动化:提高效率的秘诀
运维自动化:提高效率的秘诀
195 0
|
8月前
|
监控 供应链 安全
解放生产力:项目管理软件的神奇作用大揭秘!
项目管理软件是整合了项目管理理论的计算机系统,用于协助团队规划、执行和监控项目,提高效率、促进沟通、风险管理及监控进度。PMI、IPMA和Gartner对其有不同定义,强调其在协作、计划制定和沟通中的角色。软件提供统一平台,确保项目按时间表、预算和质量标准推进,通过自动化工作流、沟通模块和风险管理功能增强团队合作。选择软件时要考虑团队规模、行业需求、易用性和安全性。
60 0
|
负载均衡 算法 搜索推荐
一文论重复性工作中如何培养匠心
匠心来自于重复性工作,但重复性工作未必一定培养出匠心。
62459 20

热门文章

最新文章