动手写ORM框架 - GeeORM第一天 database/sql 基础
文章目录
-
- 1 初识 SQLite
- 2 database/sql 标准库
- 3 实现一个简单的 log 库
- 4 核心结构 Session
本文是7天用Go从零实现ORM框架GeeORM的第一篇。介绍了
- SQLite 的基础操作(连接数据库,创建表、增删记录等)。
- 使用 Go 语言标准库 database/sql 连接并操作 SQLite 数据库,并简单封装。
代码约150行
1 初识 SQLite
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.
- SQLite 官网
SQLite 是一款轻量级的,遵守 ACID 事务原则的关系型数据库。SQLite 可以直接嵌入到代码中,不需要像 MySQL、PostgreSQL 需要启动独立的服务才能使用。SQLite 将数据存储在单一的磁盘文件中,使用起来非常方便。也非常适合初学者用来学习关系型数据的使用。GeeORM 的所有的开发和测试均基于 SQLite。
在 Ubuntu 上,安装 SQLite 只需要一行命令,无需配置即可使用。
apt-get install sqlite3
接下来,连接数据库(gee.db),如若 gee.db 不存在,则会新建。如果连接成功,就进入到了 SQLite 的命令行模式,执行 .help
可以看到所有的帮助命令。
> sqlite3 gee.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite>
使用 SQL 语句新建一张表 User
,包含两个字段,字符串 Name 和 整型 Age。
sqlite> CREATE TABLE User(Name text, Age integer);
插入两条数据
sqlite> INSERT INTO User(Name, Age) VALUES ("Tom", 18), ("Jack", 25);
执行简单的查询操作,在执行之前使用 .head on
打开显示列名的开关,这样查询结果看上去更直观。
sqlite> .head on
# 查找 `Age > 20` 的记录;
sqlite> SELECT * FROM User WHERE Age > 20;
Name|Age
Jack|25
# 统计记录个数。
sqlite> SELECT COUNT(*) FROM User;
COUNT(*)
2
使用 .table
查看当前数据库中所有的表(table),执行.schema <table>
查看建表的 SQL 语句。
sqlite> .table
User
sqlite> .schema User
CREATE TABLE User(Name text, Age integer);
SQLite 的使用暂时介绍这么多,了解了以上使用方法已经足够我们完成今天的任务了。如果想了解更多用法,可参考 SQLite 常用命令。
2 database/sql 标准库
Go 语言提供了标准库 database/sql
用于和数据库的交互,接下来我们写一个 Demo,看一看这个库的用法。
package main
import (
"database/sql"
"log"
_ "github.com/mattn/go-sqlite3"
)
func main() {
db, _