go的各种数据库驱动
操作库
- database/sql
go操作数据库的标准库之一,提供了一系列接口方法,用于访问数据库(mysql,sqlite,oracle,postgresql),
它并不会提供数据库特有的方法,那些特有的方法教给数据库驱动实现 - github.com/jmoiron/sqlx
go get github.com/jmoiron/sqlx
sqlx是基于标准库sql的扩展,并且可以通过sqlx操作各种类型的数据,如将查询的数据转为结构体
MySql
- 驱动
github.com/go-sql-driver/mysql
go get github.com/go-sql-driver/mysql
- 连接数据库
import ( _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" ) func DbSql(){ db, err := sqlx.Open("mysql", "root:Pass@2020@tcp(192.168.199.138:3306)/test?parseTime=true") }
SQLite
- 驱动
github.com/mattn/go-sqlite3
go get github.com/mattn/go-sqlite3
- 连接数据库
import ( _ "github.com/mattn/go-sqlite3" "github.com/jmoiron/sqlx" ) func DbSql(){ db, err := sqlx.Open("sqlite3", "/Users/zhangsan/foo.db") }
SqlServer
- 驱动
github.com/denisenkom/go-mssqldb
go get github.com/denisenkom/go-mssqldb
- 连接数据库
import ( _ "github.com/denisenkom/go-mssqldb" "github.com/jmoiron/sqlx" ) func DbSql(){ conn := fmt.Sprintf("server=%s;port%d;database=%s;user id=%s;password=%s", "192.168.199.131", 1433, "test_db", "sa", "Pass@2020") db, err := sql.Open("mssql", conn) }
PostgreSQL
- 介绍
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS) - 驱动
github.com/bmizerany/pq
go get github.com/bmizerany/pq
- 连接数据库
import ( _ "github.com/bmizerany/pq" "github.com/jmoiron/sqlx" ) func DbSql(){ psqlInfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable","192.168.199.131", 5432, "test_user", "Pass@2020", "test_db") db, err := sql.Open("postgres", psqlInfo) }
- 其它
不支持LastInsertId函数,ps没有自增id,其它与mysql基本一致
Oracle
- 驱动
github.com/godror/godror
go get github.com/godror/godror
- 连接数据库
import ( _ "github.com/godror/godror" "github.com/jmoiron/sqlx" ) const ( host = "localhost" port = 1521 user = "username" sqlpassword = "password" dbname = "orcl" ) func DbSql(){ osqlInfo := fmt.Sprintf("%s/%s@%s:%d/%s", user, sqlpassword, host, port, dbname) db, err := sqlx.Open("godror", osqlInfo) }