Red de conocimiento informático - Aprendizaje de programación - Cómo utilizar el controlador de base de datos postgresql de go language

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"

_ "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)

//Actualizar datos

stmt, err = db.Prepare("actualizar información de usuario set nombre de usuario=$1 donde uid=$2")

checkErr (err)

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)

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