Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61
Conectando a MySQL
Source Code

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/main/articles.php on line 18

Conectando a MySQL


Tiempo de lectura: 1 minutos

Operaciones básicas para usar una base de datos MySQL existente, con go



Connection-pooling

Si estás creando aplicaciones de bases de datos de alto rendimiento, es necesario usar connection-pooling. El paquete estándar database/sql cuenta con connection-pooling.

Esto significa en esencia que, cada vez que consultas la base de datos, estás utilizando una conexión de un grupo de conexiones que se han configurado al iniciar la aplicación. Estas conexiones se reutilizan una y otra vez, por lo que no estás creando y destruyendo una nueva conexión cada vez que realizas una consulta.

Imports

Utilizaremos el paquete sql y el driver de MySQl. Ejecutamos go mod tidy para bajar todos los paquetes indicados en el import:

import (
	"database/sql"
	"fmt"

	_ "github.com/go-sql-driver/mysql"
)

Conexión a la base de datos

Necesitamos user, password, host y base_de_datos y abrimos la conexión

:
db, err := sql.Open("mysql", "user:password@tcp(host)/base_de_datos")
// y gestinamos el error
if err != nil {
	panic(err.Error())
}

Utilizamos defer para cerrar la conexión, una vez acabe el procedimiento principal

defer db.Close()

Ejecutar la consulta

Simplemente utilizamos el método db.Query

sql := "select * from articles where IDblog = 1"
results, err := db.Query(sql)
if err != nil {
	// tratamiento adecuado del error en vez de un "panic"
	panic(err.Error()) 
}

Lectura de registros

La tabla devuelve cuatro columnas que recogemos en una estructura como esta:

type Astro struct {
	IDart     int    `json:"article"`
	Title     string `json:"title"`
	Lang      string `json:"lang"`
	published string `json:"published"`
}

Montamos un bucle para leer los resultados y vamos asignando a nuestra estructura de registro. ten en cuenta que si se devuelven tres columnas y solo lees 2 de ellas, te dará error. Necesita que cuadren los parámetros con las columnas:

for results.Next() {
	var article Astro
	err = results.Scan(
			&article.IDart,
			&article.Title,
			&article.Lang,
			&article.published,
	)
	// procesar el registro
	fmt.Println(article.published + ", " + article.Title)
}

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 10

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 21
Xavier es un desarrollador senior full stack y opera desde la ciudad mediterránea de Barcelona. Le encantan las tecnologías de software y está convencido que el desarrollo de software es un proceso colaborativo y abierto.
Y es un apasionado de la astronomía y de la fotografía. Lo puedes encontrar en:
Comparte este post


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/footer.inc.php on line 24