Postgres Golang

Postgres Golang



Conocido a menudo como Golang, Go es un lenguaje de programación de código abierto, compilado y tipificado estáticamente creado por Google. Está diseñado para ser fácil de entender, rápido, claro y de alto rendimiento.

PostgreSQL, a menudo denominado simplemente Postgres, es un potente sistema de base de datos relacional de objetos de código abierto. Con más de 30 años de desarrollo activo, ha ganado una sólida reputación por su robustez, características avanzadas y cumplimiento sustancial de estándares.

Está diseñado para manejar cargas de trabajo extensas, desde máquinas individuales hasta almacenes de datos o servicios web con muchos usuarios simultáneos. Proporciona integridad transaccional y durabilidad y admite varios tipos de datos avanzados y un lenguaje de manipulación de datos potente y flexible.







Este tutorial nos enseña cómo configurar y conectar un servidor PostgreSQL con una aplicación Go.



Requisitos:

Ir al lenguaje de programación – Asegura que el compilador Go esté instalado en su máquina.



Base de datos PostgreSQL – También necesita tener instalado PostgreSQL. Puede instalarlo directamente en su máquina o usar un contenedor Docker para una configuración más sencilla.





Herramientas de desarrollo – Un entorno de desarrollo integrado (IDE) compatible con Go como Visual Studio Code, GoLand, etc.

Conocimientos básicos de SQL y Go – Para interactuar con la base de datos PostgreSQL, debe comprender SQL y las diversas consultas que debe realizar. También necesita una comprensión básica del lenguaje Go.



Con los requisitos dados cumplidos, podemos proceder a los siguientes pasos.

Configuración del proyecto

Comencemos configurando la estructura de directorios de nuestro proyecto. Cree el directorio principal donde necesita almacenar el código fuente del proyecto.

$ mkdir golang_postgres

Navegue al directorio e inicialice un nuevo módulo Go.

$ cd golang_postgres && ir mod init principal

Instale los controladores necesarios

Para interactuar con la base de datos PostgreSQL, necesitamos un controlador PostgreSQL para el lenguaje de programación Go.

Para este tutorial, usamos el controlador pq que ofrece una amplia gama de funciones para trabajar con la base de datos PostgreSQL.

Puede instalarlo ejecutando el siguiente comando:

ve a buscar github.com / liberación / pq

Crear una base de datos

El siguiente paso es crear una nueva base de datos PostgreSQL. Nuevamente, podemos hacer esto en el shell de PostgreSQL.

$ psql -EN postgres

Este comando le solicita la contraseña de postgres. Una vez que haya iniciado sesión, ejecute el comando 'crear base de datos' para inicializar una nueva base de datos:

postgres=# crear base de datos golang;
CREAR BASE DE DATOS

El comando dado crea una nueva base de datos llamada 'golang'. Siéntase libre de reemplazar el nombre de la base de datos con el nombre que desee.

A continuación, puede verificar que la base de datos se haya creado correctamente conectándose a ella.

postgres=# \c golang;
Ahora está conectado a la base de datos 'golang' como usuario 'postgres'.

A continuación, configure la tabla donde desea almacenar los datos. Creamos una tabla simple para este tutorial que almacena la información de la sesión.

CREAR TABLA db_clients (
id CLAVE PRIMARIA DE SERIE,
nombre VARCHAR(100) NO NULO,
session_time TIMESTAMP NO NULO,
número_de_consultas INT PREDETERMINADO 0,
active_state BOOLEANO PREDETERMINADO FALSO
);

La consulta dada debe crear una nueva tabla llamada 'db_clients' que almacena información sobre los clientes que están conectados a un servidor de base de datos determinado.

Conecte la aplicación Go con PostgreSQL

Una vez que configuramos la base de datos y la tabla de la base de datos, podemos continuar y aprender cómo conectar nuestra aplicación Go con el servidor PostgreSQL.

Comience creando un archivo 'main.go' en la raíz de su proyecto:

$ tocar principal.ir

A continuación, edite el archivo con el editor de texto de su elección:

$ porque principal.ir

En el archivo 'main.go', agregue el código fuente como se muestra a continuación:

paquete principal

importar (
    'base de datos/sql'
    'fmt'
    'registro'

    _ 'github.com/lib/pq'
)

función principal ( ) {
connStr := 'postgres://postgres:contraseña@localhost/golang?sslmode=deshabilitar'
db, err := sql.Abrir ( 'postgres' , connStr )
    si errar ! = cero {
registro.Fatal ( errar )
    }

    si err = db.Ping ( ) ; errar ! = cero {
registro.Fatal ( errar )
    }

fmt.Println ( 'Conectado a la base de datos' )
}

En el código anterior, comenzamos importando los módulos requeridos. Luego definimos la función principal. Finalmente, en la función principal, definimos la cadena de conexión que nos permite especificar el host de destino, el usuario de la base de datos, la contraseña de la base de datos y la base de datos de destino real.

El módulo admite los siguientes parámetros en la cadena de conexión:

  • dbname: el nombre de la base de datos a la que conectarse.
  • usuario: el usuario con el que iniciar sesión.
  • contraseña: la contraseña del usuario.
  • host: el host al que conectarse. Los valores que comienzan con '/' son para sockets de dominio Unix (el valor predeterminado es localhost).
  • puerto: el puerto al que enlazar (el valor predeterminado es 5432).
  • sslmode: si usar o no SSL (el valor predeterminado es require; este no es el valor predeterminado para libpq).
  • fallback_application_name: un nombre de aplicación al que recurrir si no se proporciona uno.
  • connect_timeout: la espera máxima para la conexión en segundos. Cero o no especificado significa esperar indefinidamente.
  • sslcert: la ubicación del archivo de certificado. El archivo debe contener los datos codificados con PEM.
  • sslkey: la ubicación del archivo de claves. El archivo debe contener los datos codificados con PEM.
  • sslrootcert: la ubicación del archivo del certificado raíz. El archivo debe contener los datos codificados con PEM.

Puede configurar sus propiedades de conexión de destino según sea necesario. Para configurar SSL y los parámetros SSLMode aceptados, consulte nuestro tutorial sobre https://linuxhint.com/postgres-sslmode .

Una vez que esté satisfecho con las propiedades de la conexión, puede ejecutar el código anterior para probar si se ha establecido la conexión.

ir a ejecutar .\main.go

Tras la conexión, debería obtener el siguiente resultado:

Conectado a la base de datos

PostgreSQL Insertar datos en la tabla

El siguiente paso es insertar los datos de muestra en la tabla que creamos anteriormente. Podemos hacer esto definiendo las consultas de inserción como un literal de cadena y luego usar la función db.Exec() para ejecutar la consulta de destino.

El código es el siguiente:

---
insertStatement := `INSERTAR EN db_clients (nombre, hora_sesión, número_de_consultas, estado_activo)
VALORES
('psql', '2023-05-26 10:15:00', 10, verdadero),
('datagrip', '2023-05-26 09:30:00', 5, verdadero),
('dbeaver', '2023-05-26 11:00:00', 20, verdadero),
('banco de trabajo', '2023-05-26 14:45:00', 15, falso),
('remoto', '2023-05-26 13:20:00', 8, verdadero);`

_, err = db.Exec(insertStatement)
si yerra != nil {
log.Fatal(err)
    }

Si ejecuta el código anterior, debe insertar los registros especificados en la tabla de destino.

Datos de consulta de PostgreSQL

Para consultar las filas de la tabla, podemos definir la declaración de selección como una cadena y usar db.Query() para ejecutarla. Podemos iterar sobre las filas de la tabla usando la función Next() e imprimirlas como se muestra a continuación:

filas, err := db.Query ( 'SELECCIONAR * DESDE db_clients' )
    si errar ! = cero {
registro.Fatal ( errar )
    }
aplazar filas.Cerrar ( )

    para rows.Next ( ) {
era identificación En t
cadena de nombre var
var sessionTime tiempo.Tiempo
var número de consultas int
var activeState bool

err := filas.Escanear ( & identificación , & nombre, & tiempo de sesión, & número de consultas, & estado activo )
        si errar ! = cero {
registro.Fatal ( errar )
        }

fmt.Printf ( 'ID: %d, Nombre: %s, Hora de la sesión: %s, Número de consultas: %d, Estado activo: %t \norte ' , identificación , nombre, tiempo de sesión, número de consultas, estado activo )
    }

    si err = filas.Err ( ) ; errar ! = cero {
registro.Fatal ( errar )
    }

Una vez que ejecutamos el código anterior, debería imprimir todas las filas de la tabla db_clients como se muestra en el siguiente ejemplo de salida:

¡Ahí tienes!

Conclusión

Exploramos cómo podemos usar el paquete pq para conectar y consultar la base de datos de PostgreSQL usando Golang.