Cómo utilizar el controlador de base de datos postgresql de go language
En comparación con MySQL, PostgreSQL es más grande porque está diseñado para reemplazar a Oracle. Por lo tanto, utilizar PostgreSQL en aplicaciones empresariales es una buena elección.
Después de que Oracle adquirió MySQL, hay rumores de que Oracle está cerrando MySQL gradualmente. En vista de esto, podemos elegir PostgreSQL en lugar de MySQL como la base de datos back-end del proyecto en el futuro.
1. Controladores
Go implementa muchos controladores que admiten PostgreSQL, porque muchas personas en el extranjero utilizan esta base de datos en el desarrollo.
/bmizerany/pq admite controlador de base de datos/sql, escrito exclusivamente en Go
/jbarham/gopgsqldriver admite controlador de base de datos/sql, escrito exclusivamente en Go
/ lxn/go-pgsql admite el controlador de base de datos/sql, escrito exclusivamente en Go
En el siguiente ejemplo, utilicé el primer controlador porque actualmente es utilizado por la mayoría de las personas y también está relativamente activo en github.
2. Código de ejemplo
Declaración de creación de base de datos:
Copiar código
CREAR TABLA información de usuario
(
uid serial NOT NULL,
carácter de nombre de usuario variable (100) NOT NULL,
carácter de nombre de departamento variable (500) NOT NULL,
Fecha de creación,
CONSTRAINT userinfo_pkey CLAVE PRIMARIA (uid)
)
CON (OIDS=FALSE);
CREAR TABLA userdeatail
(
uid entero,
carácter de introducción variable (100),
carácter de perfil variable (100)
)
WITH(OIDS=FALSE);
Copiar código
Vea cómo Go opera los datos de la tabla de la base de datos a continuación: agregar, eliminar, modificar y verificar
Copiar código
paquete principal
importar (
"database/sql"
"fmt" p>
_ "github.com/bmizerany/pq"
)
func main() {
db, err:= sql.Open ("postgres", "usuario=astaxie contraseña=astaxie dbname=test sslmode=disable")
checkErr(err)
//Insertar datos
stmt , err: = db.Prepare("INSERT INTO userinfo(nombre de usuario, nombre de departamento, creado) VALORES($1,$2,$3) RETORNANDO uid")
checkErr(err)
res , err: = stmt.Exec("astaxie", "R&D Department", "2012-12-09")
checkErr(err)
//pg no admite esto funciona porque no hay un ID de incremento automático como MySQL
id, err:= res.LastInsertId()
checkErr(err)
fmt.Println (id) p>
//Actualizar datos
stmt, err = db.Prepare("actualizar información de usuario set nombre de usuario=$1 donde uid=$2")
checkErr (err) p>
res, err = stmt.Exec("astaxieupdate", 1)
checkErr(err)
afectar, err:= res.RowsAffected()
checkErr(err)
fmt.Println(affect)
//Consultar datos
filas, err:= db.Query("SELECT * FROM userinfo")
checkErr(err)
para filas.Next() {
var uid int
var cadena de nombre de usuario
var cadena de departamento
var cadena creada
err = rows.Scan(amp;uid, amp;nombre de usuario, amp;departamento, amp;creado)
checkErr(err)
fmt.Println(uid)
fmt.Println(nombre de usuario)
fmt.Println(departamento)
fmt.Println(creado)
}
//Eliminar datos
stmt, err = db.Prepare("eliminar de la información del usuario donde uid=$1")
checkErr(err)
res, err = stmt.Exec(1)
checkErr(err)
afecta, err = res.RowsAffected()
checkErr(err)
fmt.Println(afecta) p>
db.Close()
}
func checkErr(err error) {
if err != nil {
pánico(err)
}
}
Copiar código
Del código anterior podemos ver que PostgreSQL pasa $1, $2 se usa para especificar los parámetros que se pasarán, en lugar de ? en MySQL. Además, el formato de la información dsn en sql.Open también es diferente del formato dsn en el controlador MySQL, así que preste atención cuando lo use. eso.diferencia.
Además, pg no admite la función LastInsertId, porque PostgreSQL no implementa un retorno de ID de incremento automático similar a MySQL internamente, y los demás códigos son casi exactamente iguales