`
sillycat
  • 浏览: 2540022 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Golang(7)Database Layer

 
阅读更多

Golang(7)Database Layer

5.1 database/sql Interface
sql.Register
Register(name string, driver driver.Driver) register the driver you add to the golang system.

https://github.com/mattn/go-sqlite3

func init() {
     sql.Register(“sqlite3”, &SQLiteDriver{})
}

https://github.com/mikespook/mymysql

var d = Driver{proto: “tcp”, raddr: “127.0.0.1:3306” }
func init() {
     Register(“SET NAMES utf8”)
     sql.Register(“mymysql”, &d)
}

For example
import (
     “database/sql”
     _ “github.com/mattn/go-sqlite3"
)

If we import this package, it will automatically call the init method in that package.

driver.Driver
type Driver interface {
     Open(name string) (Conn, error)
}
The name parameter will be used to retrieve the database connection info.
We can use this Conn to do one go routine execution, but you can not use it twice.

driver.Conn
type Conn interface {
     Prepare(query string) (Stmt, error)
     Close() error
     Begin() (Tx, error)
}

Tx is short for transaction.

driver.Stmt
type Stmt interface {
     Close() error
     NumInput() int
     Exec(args []Value) (Result, error)
     Query(args []Value) (Rows, error)
}

driver.Tx
type Tx interface {
     Commit() error
     Rollback() error
}

driver.Execer
type Execer interface {
     Exec(query string, args []Value) (Result, error)
}

driver.Result
The response and return value of Update/Insert
type Result interface {
     LastInsertId() (int64, error)
     RowsAffected() (int64, error)
}

driver.Rows
Return value of Query

type Rows interface {
     Columns() []string
     Close() error
     Next(dest []Value) error
}

Columns is the Column information from Table

driver.RowsAffected
type RowsAffected int64

driver.Value
type Value interface{}

It can hold all the different types of values. For example: int64, float64, bool, []byte, string, time.Time

driver.ValueConverter
driver.Valuer

database/sql
type DB struct {
     driver driver.Driver
     dsn     string
     mu      sync.Mutex
     freeConn     []driver.Conn
     closed     bool
}

5.2 Using MYSQL DB
https://github.com/go-sql-driver/mysql

5.3 Using Sqlite DB
https://github.com/mattn/go-sqlite3

Sqlite3 administrator tool
http://sqliteadmin.orbmu2k.de/

5.4 Using PostgreSQL DB
https://github.com/lib/pq

5.5 BeeDB

5.6 NoSQL (Not Only SQL)
redis, mongoDB, Cassandra, Membase
…todo…

References:
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/05.0.md

Redis 1~ 6
http://sillycat.iteye.com/blog/1549504
http://sillycat.iteye.com/blog/1553507
http://sillycat.iteye.com/blog/1553508
http://sillycat.iteye.com/blog/1553509
http://sillycat.iteye.com/blog/2028180
http://sillycat.iteye.com/blog/2033094

MongoDB 1 ~ 5
http://sillycat.iteye.com/blog/1547291
http://sillycat.iteye.com/blog/1547292
http://sillycat.iteye.com/blog/1547294
http://sillycat.iteye.com/blog/1965857
http://sillycat.iteye.com/blog/1965880

分享到:
评论

相关推荐

    Golang数据可视化利器go-echarts监控Oracle Database.docx

    Golang 数据可视化利器 go-echarts 监控 Oracle Database 在本文中,我们将探讨如何使用 Golang 和 go-echarts 库来监控 Oracle Database,实现数据可视化。下面是相关知识点: 1. go-echarts 库简介 go-echarts ...

    golang win7/win8 获取管理员权限

    在Windows操作系统中,尤其是Win7和Win8,为了提高系统的安全性,微软引入了用户账户控制(User Account Control,简称UAC)机制。UAC限制了普通用户账户的权限,防止未经许可的更改对系统造成影响。然而,在开发...

    golang 1.22.7 下载, windows/linux/maos 平台下载

    golang 1.22.7 下载, windows/linux/maos 平台下载 下载日期 2024-09-12

    centos7环境下vscode 搭建golang环境所需的第三方依赖包

    centos7环境下vscode 搭建golang环境所需的第三方依赖包 含有dlv,gocode,godef,golint,go-outline,gopkgs,gorename,goreturns,go-symbols,guru这10个 放在你的gopath/bin目录中就可以使用

    Go-weixin-golang-sdk微信golang工具包

    weixin-golang-sdk 微信golang工具包

    golang-odbc 驱动

    在与数据库交互方面,Go 提供了多种库和驱动,其中之一就是 "golang-odbc",它允许 Go 代码与支持 ODBC(Open Database Connectivity)的数据库进行通信。ODBC 是一个标准的 API,它提供了一个统一的方式来访问各种...

    GOLANG WEB 框架.7z

    macross-master 高效的WEB框架开发(有调整) The Macross Web Framework By Insion If you are using standard http, you may use a similar macross package makross which is adapted from Macross.

    Golang 1.18.10 Windows安装包

    Golang 1.18.10 Windows安装包。Golang 1.18.10 Windows安装包。Golang 1.18.10 Windows安装包。Golang 1.18.10 Windows安装包。Golang 1.18.10 Windows安装包。Golang 1.18.10 Windows安装包。Golang 1.18.10 ...

    golang_http_client

    golang_http_client

    golang中文手册_golang中文手册_goapiCHM_golang中文手册.chm_

    Go语言,又称Golang,是由Google开发的一种静态类型、编译型、并发型且具有垃圾回收功能的编程语言。它设计的目标是提高开发者的生产效率,同时保持系统级编程的性能。Go语言的设计受到了C、 Pascal、 Miranda和...

    golang.org/x包

    7. **golang.org/x/mobile**:针对移动平台的开发,如iOS和Android,提供了游戏开发、图形渲染和原生应用绑定等功能。 8. **golang.org/x/time**:扩展了标准库中的time包,提供了定时器和计时器功能,以及更灵活的...

    Golang Windows 1.19.1版本安装包

    Golang Windows 1.19.1版本安装包

    golang实现海康相机抓拍demo

    golang 实现海康相机抓拍,目前只支持球机。需要在代码中设置用户名和密码。 如何调试?用vscode打开,安装golang插件,即可直接调试运行。 编译与运行:运行go build命令,将HKnet.exe拷贝到build\Windows下,运行...

    golang windowns界面开发框架

    7. **文档与示例**:walk项目提供了详尽的文档和多个示例代码,方便开发者学习和参考。 8. **持续更新与社区支持**:Luke Mahe和社区成员不断维护和更新walk框架,修复已知问题并添加新功能,确保其保持活力。 在...

    百度APP之Golang语言实践

    7. **兼容性和生态系统**:作为一门比较年轻的编程语言,Golang的社区和生态系统正在快速发展。百度APP在采用Go语言时,能够利用社区提供的丰富库和工具,减少从零开始开发工作量。 需要注意的是,尽管Golang语言在...

    循环鼠标自动点击功能- Golang实现

    Golang,作为一种现代且高效的编程语言,因其强大的系统级编程能力和并发特性而受到广泛欢迎。在本文中,我们将深入探讨如何利用Golang实现这个功能,并了解相关的核心知识点。 首先,我们需要了解的是Golang的图形...

    golang提取office文件内容

    golang提取office文件内容,可以支持正常office文件内容格式,可以很好的提取标点以及内在格式内容

    golang.org/x

    7. **golang.org/x/tools**:一系列的 Go 开发工具,包括代码格式化(gofmt)、性能分析(pprof)、包依赖分析等。 8. **golang.org/x/time**:时间处理的扩展,提供了定时器、延迟执行等高级功能。 9. **golang....

    golang函数查询手册.chm

    golang函数查询手册.chm

    Golang api 最新官方中文手册

    Golang中文API,由热心网友翻译上传

Global site tag (gtag.js) - Google Analytics