修改一些字句

This commit is contained in:
astaxie
2012-09-12 13:52:43 +08:00
parent edbda4266e
commit 403e7e4fff
3 changed files with 17 additions and 15 deletions

14
5.2.md
View File

@@ -1,21 +1,21 @@
#5.2使用MySQL数据库 #5.2使用MySQL数据库
目前Internet上流行的网站构架方式是LAMPMySQL数据库是其中的标配之一MySQL作为数据库它是免费、开源的、而且使用起来非常的方便。所以目前很多Web开发都采用MySQL作为后端数据库存储。 目前Internet上流行的网站构架方式是LAMP其中的M即MySQL, 作为数据库MySQL以免费、开源、使用方便为优势成为了很多Web开发后端数据库存储引擎
##MySQL驱动 ##MySQL驱动
Go中支持MySQL的驱动目前比较多有如下几种有些是支持database/sql标准而有些是采用了自己的实现接口 Go中支持MySQL的驱动目前比较多有如下几种有些是支持database/sql标准而有些是采用了自己的实现接口,常用的有如下几种:
- http://code.google.com/p/go-mysql-driver/ 支持database/sql全部采用go写。 - http://code.google.com/p/go-mysql-driver/ 支持database/sql全部采用go写。
- https://github.com/ziutek/mymysql 支持database/sql也支持自定义的接口全部采用go写。 - https://github.com/ziutek/mymysql 支持database/sql也支持自定义的接口全部采用go写。
- https://github.com/Philio/GoMySQL 不支持database/sql自定义接口全部采用go写。 - https://github.com/Philio/GoMySQL 不支持database/sql自定义接口全部采用go写。
上面三个数据库驱动是目前使用率最高的库,我接下来的例子主要采用第一个为主(我目前项目中也是采用第一个驱动来写),也推荐大家采用第一个驱动,主要理由: 接下来的例子主要第一个驱动为例(我目前项目中也是采用它来驱动),也推荐大家采用,主要理由:
- 目前这个驱动比较新,维护的比较好 - 这个驱动比较新,维护的比较好
- 完全支持database/sql接口 - 完全支持database/sql接口
- 支持keepalive保持长连接,虽然星星forkmymysql也支持keepalive不是线程安全的这个从底层就支持了keepalive。 - 支持keepalive保持长连接,虽然[星星](http://www.mikespook.com)forkmymysql也支持keepalive但不是线程安全的这个从底层就支持了keepalive。
##示例代码 ##示例代码
接下来的几个小节里面我们都采用同一个数据库表结构,我们新建一个数据库test新建用户表userinfo关联用户信息表userdetail。 接下来的几个小节里面我们都采用同一个数据库表结构数据库test用户表userinfo关联用户信息表userdetail。
CREATE TABLE `userinfo` ( CREATE TABLE `userinfo` (
`uid` INT(10) NOT NULL AUTO_INCREMENT, `uid` INT(10) NOT NULL AUTO_INCREMENT,
@@ -32,7 +32,7 @@ Go中支持MySQL的驱动目前比较多有如下几种有些是支持data
PRIMARY KEY (`uid`) PRIMARY KEY (`uid`)
) )
看下面这个Go如何操作数据库表数据:增删改查 如下示例将示范如何使用database/sql接口对数据库表进行增删改查操作
package main package main

8
5.3.md
View File

@@ -5,11 +5,11 @@ SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置
##驱动 ##驱动
Go支持sqlite的驱动也比较多但是好多都是不支持database/sql接口的 Go支持sqlite的驱动也比较多但是好多都是不支持database/sql接口的
-https://github.com/mattn/go-sqlite3 支持database/sql接口基于cgo写的 - https://github.com/mattn/go-sqlite3 支持database/sql接口基于cgo(关于cgo的知识请参看官方文档或者本书后面的章节)写的
-https://github.com/feyeleanor/gosqlite3 不支持database/sql接口基于cgo写的 - https://github.com/feyeleanor/gosqlite3 不支持database/sql接口基于cgo写的
-https://github.com/phf/go-sqlite3 不支持database/sql接口基于cgo写的 - https://github.com/phf/go-sqlite3 不支持database/sql接口基于cgo写的
我们看到目前支持database/sql的SQLite数据库驱动只有第一个我目前采用的也是第一个驱动进行开发的。采用标准接口有利于以后出现更好的驱动的时候做迁移。 目前支持database/sql的SQLite数据库驱动只有第一个我目前也是采用它来开发项目的。采用标准接口有利于以后出现更好的驱动的时候做迁移。
##实例代码 ##实例代码
示例的数据库表结构如下所示相应的建表SQL 示例的数据库表结构如下所示相应的建表SQL

10
5.4.md
View File

@@ -4,16 +4,17 @@ PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系
PostgreSQL和MySQL比较它更加庞大一点因为它是用来替代Oracle而设计的。所以在企业应用中采用PostgreSQL是一个明智的选择。 PostgreSQL和MySQL比较它更加庞大一点因为它是用来替代Oracle而设计的。所以在企业应用中采用PostgreSQL是一个明智的选择。
现在MySQL被Oracle收购之后有传闻Oracle正在逐步的封闭MySQL,也许将来我们会选择PostgreSQL作为我们后端数据库。 现在MySQL被Oracle收购之后有传闻Oracle正在逐步的封闭MySQL,,鉴于此,将来我们也许会选择PostgreSQL而不是MySQL作为项目的后端数据库。
##驱动 ##驱动
Go实现的支持PostgreSQL的驱动还是挺多的,发现国外很多人使用这个数据库。 Go实现的支持PostgreSQL的驱动也很多,因为国外很多人在开发中使用这个数据库。
- https://github.com/bmizerany/pq 支持database/sql驱动纯Go写的 - https://github.com/bmizerany/pq 支持database/sql驱动纯Go写的
- https://github.com/jbarham/gopgsqldriver 支持database/sql驱动纯Go写的 - https://github.com/jbarham/gopgsqldriver 支持database/sql驱动纯Go写的
- https://github.com/lxn/go-pgsql 支持database/sql驱动纯Go写的 - https://github.com/lxn/go-pgsql 支持database/sql驱动纯Go写的
这里演示我采用了第一个驱动,这个库目前在Go里面使用的人多在github上也比较活跃。 在下面的示例中我采用了第一个驱动,因为它目前使用的人在github上也比较活跃。
##实例代码 ##实例代码
数据库建表语句: 数据库建表语句:
@@ -111,8 +112,9 @@ package main
} }
} }
从上面的代码我们可以看到PostgreSQL是通过`$1`,`$2`这种方式来指定要传递的参数而不是MySQL中的`?`另外在sql.Open中的dsn信息的格式也与MySQL的驱动中的dsn格式不一样所以在使用时请注意它们的差异。
上面的代码我们可以看到PostgreSQL传递参数是通过`$1`,`$2`这种方式来指定要传递的参数而不是MySQL中的`?`,所以在处理的时候稍微有点不一样。还有pg不支持LastInsertId函数因为PostgreSQL内部没有实现类似MySQL的自增ID返回其他的代码几乎是一模一样。 还有pg不支持LastInsertId函数因为PostgreSQL内部没有实现类似MySQL的自增ID返回其他的代码几乎是一模一样。
## links ## links
* [目录](<preface.md>) * [目录](<preface.md>)