修改一些字句
This commit is contained in:
14
5.2.md
14
5.2.md
@@ -1,21 +1,21 @@
|
|||||||
#5.2使用MySQL数据库
|
#5.2使用MySQL数据库
|
||||||
目前Internet上流行的网站构架方式是LAMP,MySQL数据库是其中的标配之一,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,保持长连接,虽然星星fork了mymysql也支持keepalive,但是不是线程安全的,这个从底层就支持了keepalive。
|
- 支持keepalive,保持长连接,虽然[星星](http://www.mikespook.com)fork的mymysql也支持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
8
5.3.md
@@ -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
10
5.4.md
@@ -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>)
|
||||||
|
|||||||
Reference in New Issue
Block a user