SQLite 是一个小型的关系型数据库,它最大的特点在于不需要服务器、零配置。在前面的两个服务器,不管是 MySQL 还是 MongoDB,都需要“安装”,安装之后,它运行起来,其实是已经有一个相应的服务器在跑着呢。而 SQLite 不需要这样,首先 Python 已经将相应的驱动模块作为标准库一部分了,只要安装了 Python,就可以使用;
MongoDB 开始火了,这是时代发展的需要。为此,本教程也要涉及到如何用 Python 来操作 mongodb。考虑到读者对这种数据库可能比 mysql 之类的更陌生,所以,要用多一点的篇幅稍作介绍,当然,更完备的内容还是要去阅读专业的 mongodb 书籍。mongodb 是属于 NoSql 的。NoSql,全称是 Not Only Sql,指的是非关系型的数据库。
就数据库而言,连接之后就要对其操作。但是,目前那个名字叫做 qiwsirtest 的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维基百科对数据库表的简要解释,要想详细了解,需要看官在找一些有关数据库的教程和书籍来看看。在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系。
尽管用文件形式将数据保存到磁盘,已经是一种不错的方式。但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,它们称之为“资料库”)。维基百科对数据库有比较详细的说明:数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
在《文件(1)》和《文件(2)》中,已经学习了如何读写文件。如果在程序中,有数据要保存到磁盘中,放到某个文件中是一种不错的方法。但是,如果像以前那样存,未免有点凌乱,并且没有什么良好的存储格式,导致数据以后被读出来的时候遇到麻烦,特别是不能让另外的使用者很好地理解。不要忘记了,编程是一个合作的活。
标准库的内容已经非常多了,前面仅仅列举几个,但是 Python 给编程者的支持还不仅仅在于标准库,它还有不可胜数的第三方库。因此,如果作为一个 Python 编程者,即使你达到了 master 的水平,最好的还是要在做某个事情之前,在网上搜一下是否有标准库或者第三方库替你完成那件事。因为,伟大的艾萨克·牛顿爵士说过:如果我比别人看得更远,那是因为我站在巨人的肩上。
json就传递数据而言,xml 是一种选择,还有另外一种,就是 json,它是一种轻量级的数据交换格式,如果读者要做 web 编程,是会用到它的。根据维基百科的相关内容,对 json 了解一二:JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想设计、轻量级的资料交换语言,以文字为基础,且易于让人阅读。
xml 在软件领域用途非常广泛,有名人曰:“当 XML(扩展标记语言)于 1998 年 2 月被引入软件工业界时,它给整个行业带来了一场风暴。有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。
urlliburllib 模块用于读取来自网上(服务器上)的数据,比如不少人用 Python 做爬虫程序,就可以使用这个模块。先看一个简单例子:>>> import urllib>>> itdiffer = urllib.urlopen("http://www.itdiffer.com")这样就已经把我的网站www.itdiffer.com首页的内容拿过来了,得到了一个类似文件的对象。
“一寸光阴一寸金,寸金难买寸光阴”,时间是宝贵的。在日常生活中,“时间”这个属于是比较笼统和含糊的。在物理学中,“时间”是一个非常明确的概念。在 Python 中,“时间”可以通过相关模块实现。calendar>>> import calendar>>> cal = calendar.month(2015, 1)>>>
heapq堆(heap),是一种数据结构。用维基百科中的说明:堆(英语:heap),是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。对于这个新的概念,读者不要感觉心慌意乱或者恐惧,因为它本质上不是新东西,而是在我们已经熟知的知识基础上的扩展。堆的实现是通过构造二叉堆,也就是一种二叉树。
OSos 模块提供了访问操作系统服务的功能,它所包含的内容比较多。>>> import os>>>
Python 标准库内容非常多,有人专门为此写过一本书。在本教程中,由于我的原因,不会将标准库进行完整的详细介绍,但是,我根据自己的理解和喜好,选几个呈现出来,一来显示标准库之强大功能,二来演示如何理解和使用标准库。sys这是一个跟 Python 解释器关系密切的标准库,上一节中我们使用过 sys.path.append()。>>> import sys>>> print sys.
“Python 自带‘电池’”,听说过这种说法吗?在 Python 被安装的时候,就有不少模块也随着安装到本地的计算机上了。这些东西就如同“能源”、“电力”一样,让 Python 拥有了无限生机,能够非常轻而易举地免费使用很多模块。所以,称之为“自带电池”。它们被称为“标准库”。熟悉标准库,是进行编程的必须。引用的方式不仅使标准库的模块,所有模块都服从下述引用方式。
在本章之前,Python 还没有显示出太突出的优势。本章开始,读者就会越来越感觉到 Python 的强大了。这种强大体现在“模块自信”上,因为 Python 不仅有很强大的自有模块(称之为标准库),还有海量的第三方模块,任何人还都能自己开发模块,正是有了这么强大的“模块自信”,才体现了 Python 的优势所在。并且这种方式也正在不断被更多其它语言所借鉴。
按照一般的学习思路,掌握了前两节内容,已经足够编程所需了。但是,我还想再多一步,还是因为本教程的读者是要 from beginner to master。assert>>> assert 1==1>>> assert 1==0Traceback (most recent call last): File "<stdin>", line 1, in <module>AssertionError从上面的举例中可以基本了解了 assert 的特点。
try...except...是处理异常的基本方式。在原来的基础上,还可有扩展。处理多个异常处理多个异常,并不是因为同时报出多个异常。程序在运行中,只要遇到一个异常就会有反应,所以,每次捕获到的异常一定是一个。所谓处理多个异常的意思是可以容许捕获不同的异常,有不同的 except 子句处理。#!
虽然在前面的学习中,已经遇到了错误和异常问题,但是一直没有很认真的研究它。现在来近距离观察错误和异常。错误Python 中的错误之一是语法错误(syntax errors),比如:>>> for i in range(10) File "<stdin>
生成器(英文:generator)是一个非常迷人的东西,也常被认为是 Python 的高级编程技能。不过,我依然很乐意在这里跟读者——尽管你可能是一个初学者——探讨这个话题,因为我相信读者看本教程的目的,绝非仅仅将自己限制于初学者水平,一定有一颗不羁的心——要成为 Python 高手。那么,开始了解生成器吧。还记得上节的“迭代器”吗?生成器和迭代器有着一定的渊源关系。
迭代,对于读者已经不陌生了,曾有专门一节来讲述,如果印象不深,请复习《迭代》。正如读者已知,对序列(列表、元组)、字典和文件都可以用 iter() 方法生成迭代对象,然后用 next() 方法访问。当然,这种访问不是自动的,如果用 for 循环,就可以自动完成上述访问了。
关注时代Java