Skip to content

Commit 43c3a2f

Browse files
committed
p3
1 parent 2011254 commit 43c3a2f

File tree

1 file changed

+49
-71
lines changed

1 file changed

+49
-71
lines changed

230.md

+49-71
Original file line numberDiff line numberDiff line change
@@ -2,69 +2,61 @@
22
33
#MySQL数据库(1)
44

5-
尽管用文件形式将数据保存到磁盘,已经是一种不错的方式。但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,它们称之为“资料库”)。维基百科对数据库有比较详细的说明:
5+
尽管用文件形式将数据保存到磁盘,已经是一种不错的方式。但是,人们还是发明了更具有格式化特点,并且写入和读取更快速便捷的东西——数据库(如果阅读港台的资料,称之为“资料库”)。维基百科对数据库有比较详细的说明:
66

77
>数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
88
9-
到目前为止,地球上有三种类型的数据
9+
到目前为止,地球上的数据库主要有三种
1010

1111
- 关系型数据库:MySQL、Microsoft Access、SQL Server、Oracle、...
1212
- 非关系型数据库:MongoDB、BigTable(Google)、...
1313
- 键值数据库:Apache Cassandra(Facebook)、LevelDB(Google) ...
1414

15-
在本教程中,我们主要介绍常用的开源的数据库,其中MySQL是典型代表。
15+
##概况
1616

17-
###概况
18-
19-
MySQL是一个使用非常广泛的数据库,很多网站都是用它。关于这个数据库有很多传说。例如[维基百科上这么说:](http://zh.wikipedia.org/wiki/MySQL)
17+
MySQL是一个使用非常广泛的数据库,很多网站都使用它。关于这个数据库有很多传说,例如[维基百科上有这么一段:](http://zh.wikipedia.org/wiki/MySQL)
2018

2119
>MySQL(官方发音为英语发音:/maɪ ˌɛskjuːˈɛl/ "My S-Q-L",[1],但也经常读作英语发音:/maɪ ˈsiːkwəl/ "My Sequel")原本是一个开放源代码的关系数据库管理系统,原开发者为瑞典的MySQL AB公司,该公司于2008年被升阳微系统(Sun Microsystems)收购。2009年,甲骨文公司(Oracle)收购升阳微系统公司,MySQL成为Oracle旗下产品。
2220
2321
>MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
2422
2523
>但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,因此原先一些使用MySQL的开源软件逐渐转向其它的数据库。例如维基百科已于2013年正式宣布将从MySQL迁移到MariaDB数据库。
2624
27-
不管怎么着,MySQL依然是一个不错的数据库选择,足够支持读者完成一个相当不小的网站
25+
不管怎么着,MySQL依然是一个不错的数据库选择,足够支持读者完成一个不小的网站
2826

29-
###安装
27+
##安装
3028

31-
你的电脑或许不会天生就有MySQL(是不是有的操作系统,在安装的时候就内置了呢?的确有,所以特别推荐Linux的某发行版),它本质上也是一个程序,若有必要,须安装。
29+
你的电脑或许不会天生就有MySQL,它本质上也是一个程序,若有必要,须安装。
3230

33-
我用ubuntu操作系统演示,因为我相信读者将来在真正的工程项目中,多数情况下是要操作Linux系统的服务器,并且,我酷爱用ubuntu。还有,本教程的目标是from beginner to master,不管是不是真的master,总要装得像,Linux能够给你撑门面。
31+
我用Ubuntu操作系统演示,因为我相信读者将来在真正的工程项目中,多数情况下是要操作Linux系统的服务器,并且,我酷爱用Ubuntu。本书的目标是from beginner to master,不管是不是真的master,总要装得像,Linux能够给你撑门面,这也是推荐使用Ubuntu的原因
3432

3533
第一步,在shell端运行如下命令:
3634

3735
sudo apt-get install mysql-server
3836

39-
运行完毕,就安装好了这个数据库。是不是很简单呢?当然,当然,还要进行配置。
40-
41-
第二步,配置MySQL
37+
运行完毕就安装好了这个数据库。是不是很简单呢?当然,还要进行配置。
4238

43-
安装之后,运行:
39+
第二步,配置MySQL。安装之后,运行:
4440

4541
service mysqld start
4642

47-
启动mysql数据库。然后进行下面的操作,对其进行配置。
43+
启动MySQL数据库,然后进行下面的操作,对其进行配置。
4844

49-
默认的MySQL安装之后根用户是没有密码的,注意,这里有一个名词“根用户”,其用户名是:root。运行:
45+
默认的MySQL安装之后根用户(root)是没有密码的,注意,这里有一个名词“根用户”,其用户名是:root。运行:
5046

5147
$mysql -u root
5248

53-
在这里之所以用-u root是因为我现在是一般用户(firehare),如果不加-u root的话,mysql会以为是firehare在登录。
54-
55-
进入mysql之后,会看到>符号开头,这就是mysql的命令操作界面了。
49+
进入MySQL之后,会看到`>`符号开头,这就是MySQL的命令操作界面了。
5650

57-
下面设置Mysql中的root用户密码了,否则,Mysql服务无安全可言了
51+
下面设置MySQL中的root用户密码,否则,MySQL服务无安全可言了
5852

5953
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456";
6054

61-
用123456做为root用户的密码,应该是非常愚蠢的,如果在真正的项目中,最好别这样做,要用大小写字母与数字混合的密码,且不少于8位。
55+
用123456做为root用户的密码,应该是非常愚蠢的,如果在真正的项目中最好别这样做,要用大小写字母与数字混合的密码,且不少于8位。以后如果再登录数据库,就可以用刚才设置的密码了
6256

63-
以后如果在登录数据库,就可以用刚才设置的密码了。
57+
##运行
6458

65-
###运行
66-
67-
安装之后,就要运行它,并操作这个数据库。
59+
安装完就要运行它,并操作这个数据库。
6860

6961
$ mysql -u root -p
7062
Enter password:
@@ -85,7 +77,7 @@ MySQL是一个使用非常广泛的数据库,很多网站都是用它。关于
8577

8678
mysql>
8779

88-
看到这个界面内容,就说明你已经进入到数据里面了。接下来就可以对这个数据进行操作。例如:
80+
恭喜你,已经进入到数据库操作界面了,接下来就可以对这个数据进行操作。例如:
8981

9082
mysql> show databases;
9183
+--------------------+
@@ -100,27 +92,25 @@ MySQL是一个使用非常广泛的数据库,很多网站都是用它。关于
10092
| test |
10193
+--------------------+
10294

103-
用这个命令,就列出了当前已经有的数据库
95+
`show databases;`(最后的半角分号别忘记了)命令表示列出当前已经有的数据库
10496

10597
对数据库的操作,除了用命令之外,还可以使用一些可视化工具。比如phpmyadmin就是不错的。
10698

10799
更多数据库操作的知识,这里就不介绍了,读者可以参考有关书籍。
108100

109-
MySQL数据库已经安装好,但是Python还不能操作它,还要继续安装python操作数据库的模块——python-MySQLdb
110-
111-
###安装python-MySQLdb
101+
MySQL数据库已经安装好,但是Python还不能操作它,还要继续安装Python操作数据库的模块——`python-MySQLdb`
112102

113-
python-MySQLdb是一个接口程序,python通过它对mysql数据实现各种操作。
103+
##安装`python-MySQLdb`
114104

115-
在编程中,会遇到很多类似的接口程序,通过接口程序对另外一个对象进行操作。接口程序就好比钥匙,如果要开锁,人直接用手指去捅,肯定是不行的,那么必须借助工具,插入到锁孔中,把锁打开,之后,门开了,就可以操作门里面的东西了。那么打开锁的工具就是接口程序。谁都知道,用对应的钥匙开锁是最好的,如果用别的工具(比如锤子),或许不便利(其实还分人,也就是人开锁的水平,如果是江洋大盗或者小毛贼什么的,擅长开锁,用别的工具也便利了),也就是接口程序不同,编码水平不同,都是考虑因素
105+
`python-MySQLdb`是一个接口程序,Python通过它对MySQL数据实现各种操作
116106

117-
啰嗦这么多,一言蔽之,python-MySQLdb就是打开MySQL数据库的钥匙
107+
在编程中会遇到很多类似的接口程序,通过接口程序对另外一个对象进行操作。接口程序就好比钥匙,如果要开锁,直接用手指去捅肯定是不行的,必须借助工具插入到锁孔中,把锁打开,门开了,就可以操作门里面的东西了,那么打开锁的工具就是接口程序。谁都知道,用对应的钥匙开锁是最好的,如果用别的工具(比如锤子)或许不便利(当然,具有特殊开锁能力的人除外),也就是接口程序,编码水平等都是考虑因素
118108

119-
如果要源码安装,可以这里下载python-mysqldb:[https://pypi.python.org/pypi/MySQL-python/](https://pypi.python.org/pypi/MySQL-python/)
109+
python-MySQLdb就是打开MySQL数据库的钥匙。
120110

121-
下载之后就可以安装了。
111+
如果要源码安装,可以这里下载python-mysqldb:[https://pypi.python.org/pypi/MySQL-python/](https://pypi.python.org/pypi/MySQL-python/)下载之后就可以安装了。
122112

123-
ubuntu下可以这么做:
113+
在Ubuntu操作系统下还可以用软件仓库来安装。
124114

125115
sudo apt-get install build-essential python-dev libmysqlclient-dev
126116
sudo apt-get install python-MySQLdb
@@ -129,13 +119,13 @@ ubuntu下可以这么做:
129119

130120
pip install mysql-python
131121

132-
安装之后,在python交互模式下
122+
安装之后,在Python交互模式下
133123

134124
>>> import MySQLdb
135125

136-
如果不报错,恭喜你,已经安装好了。如果报错,恭喜你,可以借着错误信息提高自己的计算机水平了,请求助于google大神。
126+
如果不报错,恭喜你,已经安装好了。如果报错,那么恭喜你,可以借着错误信息提高自己的计算机水平了,请求助于google大神。
137127

138-
###连接数据库
128+
##连接数据库
139129

140130
要先找到老婆,才能谈如何养育自己的孩子,同理连接数据库之先要建立数据库。
141131

@@ -144,48 +134,36 @@ ubuntu下可以这么做:
144134

145135
进入到数据库操作界面:
146136

147-
Welcome to the MySQL monitor. Commands end with ; or \g.
148-
Your MySQL connection id is 373
149-
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
150-
151-
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
152-
153-
Oracle is a registered trademark of Oracle Corporation and/or its
154-
affiliates. Other names may be trademarks of their respective
155-
owners.
156-
157-
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
158-
159137
mysql>
160138

161139
输入如下命令,建立一个数据库:
162140

163141
mysql> create database qiwsirtest character set utf8;
164142
Query OK, 1 row affected (0.00 sec)
165143

166-
注意上面的指令,如果仅仅输入create database qiwsirtest也可以,但是,我在后面增加了character set utf8,意思是所建立的数据库qiwsirtest,编码是utf-8的,这样存入汉字就不是乱码了。
144+
注意上面的指令,如果仅仅输入`create database qiwsirtest`也可以,但是我在后面增加了`character set utf8`,意思是所建立的数据库qiwsirtest,编码是utf-8,这样存入汉字就不是乱码了。
167145

168-
看到那一行提示:Query OK, 1 row affected (0.00 sec),就说明这个数据库已经建立好了,名字叫做:qiwsirtest
146+
看到那一行提示:Query OK, 1 row affected (0.00 sec),说明这个数据库已经建立好了,名字叫qiwsirtest。
169147

170-
数据库建立之后,就可以用python通过已经安装的mysqldb来连接这个名字叫做qiwsirtest的库了
148+
数据库建立之后,就可以用Python通过已经安装的`python-MySQLdb`来连接这个名字叫做qiwsirtest的库了
171149

172150
>>> import MySQLdb
173151
>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",port=3306,charset="utf8")
174152

175-
逐个解释上述命令的含义
153+
下面逐个解释上述命令的含义
176154

177-
- host:等号的后面应该填写mysql数据库的地址,因为就数据库就在本机上(也称作本地),所以使用localhost,注意引号。如果在其它的服务器上,这里应该填写ip地址。一般中小型的网站,数据库和程序都是在同一台服务器(计算机)上,就使用localhost了。
178-
- user:登录数据库的用户名,这里一般填写"root",还是要注意引号。当然,如果读者命名了别的用户名,数据库管理者提供了专有用户名,就更改为相应用户。但是,不同用户的权限可能不同,所以,在程序中,如果要操作数据库,还要注意所拥有的权限。在这里用root,就放心了,什么权限都有啦。不过,这样做,在大型系统中是应该避免的
179-
- passwd:上述user账户对应的登录mysql的密码。我在上面的例子中用的密码是"123123"。不要忘记引号。
180-
- db:就是刚刚通create命令建立的数据库,我建立的数据库名字是"qiwsirtest",还是要注意引号。看官如果建立的数据库名字不是这个,就写自己所建数据库名字。
181-
- port:一般情况,mysql的默认端口是3306,当mysql被安装到服务器之后,为了能够允许网络访问,服务器(计算机)要提供一个访问端口给它。
182-
- charset:这个设置,在很多教程中都不写,结果在真正进行数据存储的时候,发现有乱码。这里我将qiwsirtest这个数据库的编码设置为utf-8格式,这样就允许存入汉字而无乱码了。注意,在mysql设置中,utf-8写成utf8,没有中间的横线。但是在python文件开头和其它地方设置编码格式的时候,要写成utf-8。切记!
155+
- host:等号的后面应该填写MySQL数据库的地址,因为就数据库就在本机上(也称作本地),所以使用localhost,注意引号。如果在其它的服务器上,这里应该填写IP地址。一般中小型的网站,数据库和程序都是在同一台服务器(计算机)上,就使用localhost了。
156+
- user登录数据库的用户名,这里一般填写"root"还是要注意引号。当然,如果读者命名了别的用户名,就更改为相应用户。但是,不同用户的权限可能不同,所以,在程序中,如果要操作数据库,还要注意所拥有的权限。在这里用root,不过,这样种做法在大型系统中是应该避免的
157+
- passwd:user账户登录MySQL的密码。例子中用的密码是"123123"。不要忘记引号。
158+
- db就是刚刚通create命令建立的数据库,我建立的数据库名字是"qiwsirtest",还是要注意引号。看官如果建立的数据库名字不是这个,就写自己所建数据库名字。
159+
- port一般情况,MySQLdb的默认端口是3306,当MySQLdb被安装到服务器之后,为了能够允许网络访问,服务器(计算机)要提供一个访问端口给它(服务器管理员可以进行端口配置)
160+
- charset这个设置,在很多教程中都不写,结果在真正进行数据存储的时候,发现有乱码。这里将qiwsirtest这个数据库的编码设置为utf-8格式,这样就允许存入汉字而无乱码了。注意,在MySQLdb设置中,utf-8写成utf8没有中间的横线。但是在Python文件开头和其它地方设置编码格式的时候,要写成utf-8。
183161

184-
注:connect中的host、user、passwd等可以不写,只要在写的时候按照host、user、passwd、db(可以不写)、port顺序写就可以,端口号port=3306还是不要省略的为好,如果没有db在port前面,直接写3306会报错.
162+
注:connect中的所有参数,可以只按照顺序把值写入。但是,我推荐读者还是按照上面的方式,以免出了乱子自己还糊涂。
185163

186-
其实,关于connect的参数还不少,下面摘抄来自[mysqldb官方文档的内容](http://mysql-python.sourceforge.net/MySQLdb.html),把所有的参数都列出来,还有相关说明,请看官认真阅读。不过,上面几个是常用的,其它的看情况使用。
164+
其实,关于connect的参数还有别的,下面摘抄来自[mysqldb官方文档的内容](http://mysql-python.sourceforge.net/MySQLdb.html),把所有的参数都列出来,还有相关说明,请看官认真阅读。不过,上面几个是常用的,其它的看情况使用。
187165

188-
connect(parameters...)
166+
>connect(parameters...)
189167
190168
>Constructor for creating a connection to the database. Returns a Connection Object. Parameters are the same as for the MySQL C API. In addition, there are a few additional keywords that correspond to what you would pass mysql_options() before connecting. Note that some parameters must be specified as keyword arguments! The default value for each parameter is NULL or zero, as appropriate. Consult the MySQL documentation for more details. The important parameters are:
191169
@@ -205,25 +183,25 @@ connect(parameters...)
205183
- cursorclass: cursor class that cursor() uses, unless overridden. Default: MySQLdb.cursors.Cursor. This must be a keyword parameter.
206184
- use_unicode: If True, CHAR and VARCHAR and TEXT columns are returned as Unicode strings, using the configured character set. It is best to set the default encoding in the server configuration, or client configuration (read with read_default_file). If you change the character set after connecting (MySQL-4.1 and later), you'll need to put the correct character set name in connection.charset.
207185

208-
If False, text-like columns are returned as normal strings, but you can always write Unicode strings.
186+
>If False, text-like columns are returned as normal strings, but you can always write Unicode strings.
209187
210-
This must be a keyword parameter.
188+
>This must be a keyword parameter.
211189
212190
- charset: If present, the connection character set will be changed to this character set, if they are not equal. Support for changing the character set requires MySQL-4.1 and later server; if the server is too old, UnsupportedError will be raised. This option implies use_unicode=True, but you can override this with use_unicode=False, though you probably shouldn't.
213191

214-
If not present, the default character set is used.
192+
>If not present, the default character set is used.
215193
216-
This must be a keyword parameter.
194+
>This must be a keyword parameter.
217195
218196
- sql_mode: If present, the session SQL mode will be set to the given string. For more information on sql_mode, see the MySQL documentation. Only available for 4.1 and newer servers.
219197

220-
If not present, the session SQL mode will be unchanged.
198+
>If not present, the session SQL mode will be unchanged.
221199
222-
This must be a keyword parameter.
200+
>This must be a keyword parameter.
223201
224202
- ssl: This parameter takes a dictionary or mapping, where the keys are parameter names used by the mysql_ssl_set MySQL C API call. If this is set, it initiates an SSL connection to the server; if there is no SSL support in the client, an exception is raised. This must be a keyword parameter.
225203

226-
已经完成了数据库的连接。
204+
至此,已经完成了数据库的连接。
227205

228206
------
229207

0 commit comments

Comments
 (0)