Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
lmpythw-zh
提交
4a3f295b
L
lmpythw-zh
项目概览
OpenDocCN
/
lmpythw-zh
大约 1 年 前同步成功
通知
0
Star
18
Fork
5
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
lmpythw-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4a3f295b
编写于
8月 15, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
part6
上级
826a0da8
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
47 addition
and
0 deletion
+47
-0
part6.md
part6.md
+47
-0
未找到文件。
part6.md
0 → 100644
浏览文件 @
4a3f295b
# 第六部分:SQL 和对象关系映射
> 原文:[Part VI: SQL and Object Relational Mapping](https://learncodethehardway.org/more-python-book/part5.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
在本书的这一部分中,我们将介绍一些内容,它们与本书其余部分的结构不相符,但对于初级开发人员来说,这是非常必要的主题。了解如何在 SQL 数据库中构造数据,会教给你如何在逻辑上思考数据存储需求。有一个建立已久的方法来解构数据,有效存储数据和访问数据。近年来 NoSQL 数据库的发展使其不同,但关系数据库设计背后的基本概念仍然有用。在您需要存储数据的每个地方,都需要良好地构造并理解数据。
大多数这些练习会让你涉及使用 SQL 数据库,因此,我建议您从
[
SQLite3 下载页面
](
https://www.sqlite.org/downloads.html
)
下载
`sqlite3`
二进制文件,如果您还没有安装的话。我们使用 Python,所以它已经安装在大多数 Python 发行版中,但有时它不可用。如果你不能在你的 python shell 中运行这个 Python 代码:
```
py
>>>
import
sqlite3
```
你的 Python 就没有默认带有
`sqlite3`
。你需要弄清楚为什么会丢失,并且很可能有另外一个包,你需要先安装它才能在 Python 中使用。
## 理解 SQL 就是理解表
当你开始这部分的练习之前,你需要完整理解一个概念,它为许多 SQL 初学者造成了问题。
> SQL 数据库中的每个单独的东西都是一张表。
把它刻录到你的大脑里。对于“表”,我是说就像一个电子表格,其中左边有行,顶部有列。通常,您将使用进入该列的某种数据来命名列。那么每一行代表你需要放入表的一件事情。这可以是一个帐户,一个人的名单及其信息,菜谱,甚至汽车。每一行都是一辆汽车,每列是一些属性,关于你需要跟踪的那辆车。
这为大多数程序员造成了问题,因为我们按照树形结构思考问题。一个对象其中有另一个对象,对象里面有个列表,列表里面有个字典,字典里面有个字符串,字符串映射为数据。我们将东西嵌套在里面,而且这种风格的数据结构不适合表。对于大多数程序员来说,似乎这两个结构(表和树)不能共存,但是树和表实际上是非常相似的。您几乎可以使用任何树形结构,并将其映射到几乎任何矩阵上,但您必须了解 SQL 数据库的另一个方面:关系。
关系使得 SQL 数据库变得比电子表格更有用。电子表格可以让您创建一整套工作表,并在其中放置不同类型的数据,但是难以将这些工作表链接在一起。SQL 数据库的目的完全是,使您可以使用列或其他表将表链接在一起。SQL 数据库的天赋是,使用一个结构(表)来构建几乎任何类型的数据结构,您可以通过将它们链接在一起来实现。
我们将了解SQL数据库中的关系,但快速回答是,如果您可以创建一个数据树,那么您可以将该树放入1个或多个表中。在本书的这个阶段,我们可以简化将一组相关的Python类转换为SQL表的过程,如下所示:
+
为所有类创建表。
+
在子表中设置
`id`
列指向父表。
+
在任何两个类“之间”创建链接表,这两个类通过列表链接。
它比这更复杂,但是,当将一组类转换为 SQL 时,这是所做事情的要点。事实上,大部分像 Django 这样的系统,是上述三件事情的复杂版本。
## 你会学到什么
本节的目的不是教你如何成为一个 SQL 系统管理员。如果你想做这个工作,那么我建议你学习有关 Unix 的一切,然后去获得一个公司的证书,这个公司提供技术认证。请记住,这不是一个非常有趣的工作,类似于看管一个大型的猫类动物园。猫,不是小猫。
在第六部分末尾,你将学到 SQL 在基本层面上的工作原理。这是一个 SQL 速成课,以您创建的对象关系映射器(ORM)结束,它与 Django 相似。本节仅仅是了解 SQL 工作方式的一个突破点,目的是为您提供足够的信息,来了解 Django 系统中发生的东西。
如果你想在你的工作中超出这个部分,我推荐 Joe Celko 的
[
《SQL For Smarties》
](
http://amzn.to/1QKi5iG
)
,和一些时间。Joe 的书很厚,但很完整,他是 SQL 的大师。阅读这本书将使你非常能干。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录