golang sqlx mysql_golang 数据库开发神器 sqlx使用指南

sqlx使用指南

这边文章主要基于Illustrated guide to SQLX翻译而成。

sqlx是一个go语言包,在内置database/sql包之上增加了很多扩展,简化数据库操作代码的书写。

资源

由于database/sql接口是sqlx的子集,当前文档中所有关于database/sql的用法同样用于sqlx

开始

安装sqlx 驱动

$ go get github.com/jmoiron/sqlx

本文访问sqlite数据库

$ go get github.com/mattn/go-sqlite3

Handle Types

sqlx设计和database/sql使用方法是一样的。包含有4中主要的handle types:

- sqlx.DB - 和sql.DB相似,表示数据库。

- sqlx.Tx - 和sql.Tx相似,表示transacion。

- sqlx.Stmt - 和sql.Stmt相似,表示prepared statement。

- sqlx.NamedStmt - 表示prepared statement(支持named parameters)

所有的handler types都提供了对database/sql的兼容,意味着当你调用sqlx.DB.Query时,可以直接替换为sql.DB.Query.这就使得sqlx可以很容易的加入到已有的数据库项目中。

此外,sqlx还有两个cursor类型:

- sqlx.Rows - 和sql.Rows类似,Queryx返回。

- sqlx.Row - 和sql.Row类似,QueryRowx返回。

连级到数据库

一个DB实例并不是一个链接,但是抽象表示了一个数据库。这就是为什么创建一个DB时并不会返回错误和panic。它内部维护了一个连接池,当需要进行连接的时候尝试连接。你可以通过Open创建一个sqlx.DB或通过NewDb从已存在的sql.DB中创建一个新的sqlx.DB

var db *sqlx.DB

// exactly the same as the built-in

db = sqlx.Open("sqlite3", ":memory:")

// from a pre-existing sql.DB; note the required driverName

db = sqlx.NewDb(sql.Open("sqlite3", ":memory:"), "sqlite3")

// force a connection and test that it worked

err = db.Ping()

在一些环境下,你可能需要同时打开一个DB并链接。可以调用connect,这个函数打开一个新的DB并尝试Ping。MustConnect函数在链接出错时会panic。

var err error

// open and connect at the same time:

db, err = sqlx.Connect("sqlite3", ":memory:")

// open and connect at the same time, panicing on error

db = sqlx.MustConnect("sqlite3", ":memory:")

Querying 101

sqlx中的handle types实现了数据库查询相同的基本的操作语法。

- Exec(…) (sql.Result, error) - 和 database/sql相比没有改变

- Query(…) (*sql.Rows, error) - 和 database/sql相比没有改变

- QueryRow(…) *sql.Row - 和 da

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值