Postgres es una de las bases de datos SQL populares debido a sus muchas características y facilidad de uso. Postgres es compatible con ACID con funciones como control de concurrencia de múltiples versiones, replicación asíncrona, transacciones anidadas y registro de escritura anticipada. Junto con muchas otras, estas funciones hacen de Postgres el sistema de gestión de bases de datos SQL de referencia.
El ecosistema Go alberga muchos paquetes para interactuar con varios DBMS, incluido Postgres. Go proporciona el integrado base de datos/sql paquete para trabajar con bases de datos SQL utilizando controladores de bases de datos. Con las estructuras de datos de Go, puede integrar ORM populares de terceros como GORM para una fácil interacción con su base de datos.
Primeros pasos con GORM y Postgres
El paquete GORM es uno de los ORM más populares en el ecosistema Go porque es fácil de usar para desarrolladores, rico en funciones y se basa en
el base de datos/sql paquete.GORM proporciona funcionalidad para migraciones automáticas, registro, declaraciones preparadas, transacciones y fragmentación. El paquete adopta el enfoque de código primero utilizando estructuras y otros tipos de datos integrados.
Ejecute este comando de terminal en su directorio de trabajo para agregar el paquete GORM a las dependencias de su proyecto:
ir obtener gorm.io/gorm\n
Necesitará un controlador de base de datos para trabajar con el paquete GORM. GORM proporciona controladores de base de datos para DBMS populares. Ejecute este comando en su directorio de trabajo para instalar GORM postgres conductor:
ir obtener gorm.io/driver/postgres\n
Conexión de Postgres con Go usando GORM
Importe estos paquetes en su archivo Go para trabajar con el ORM y el controlador de la base de datos. Usarás el registro paquete para registrar errores en su consola y el fmt paquete para imprimir la salida.
importar (\norte "fmt"\norte "gorm.io/driver/postgres"\norte "gorm.io/gorm"\norte "registro"\n)\n
Necesitará una cadena de conexión para conectarse a su base de datos postgres en el entorno de ejecución. Puede usar una estructura como modelo para los campos que componen la cadena de conexión. El uso de una estructura facilita el cambio y la prueba de diferentes valores, especialmente en casos de inyección de dependencia.
Aquí hay un modelo de estructura de ejemplo para los campos que componen la cadena de conexión:
tipo Configuración estructura {\n Anfitrión cadena\nPuerto cadena\n Contraseña cadena\n Usuario cadena\n nombre de la base de datos cadena\n Modo SSL cadena\n}\n
A continuación se muestra una función típica para la conexión de su base de datos. Devuelve la instancia de conexión y un error dependiendo del estado de la conexión.
funciónNueva conexión()(*gorm. base de datos, error) {\norte devolver base de datos, nulo\n}\n
Puede crear una instancia del modelo de estructura de conexión y completar los campos con los valores en su base de datos de Postgres.
configuraciones := Config{\n Host: "host_base_de_datos",\nPuerto: "puerto_base_de_datos",\n Contraseña: "contraseña_base_de_datos",\n Usuario: "usuario_base_de_datos",\n Nombre BD: "nombre de la base de datos",\n Modo SSL: "FALSO",\n }\n dsn := fmt. Sprintf("host=%s puerto=%s usuario=%s contraseña=%s dbname=%s sslmode=%s", configuraciones. Anfitrión, configuraciones. Puerto, configuraciones. Usuario, configuraciones. Contraseña, configuraciones. DBName, configuraciones. Modo SSL)\n
El dsn variable utiliza el Sprintf método de formateo y Ir a verbos de formato de cadena para concatenar los campos de la Configuración struct y configure la cadena de conexión de Postgres.
Puede abrir una conexión de base de datos con GORM usando el Abierto método. El Abierto El método toma una conexión abierta desde un controlador de base de datos y una lista de configuraciones opcionales desde el Configuración tipo del paquete GORM. Devuelve una instancia de conexión y un error opcional.
db, error: = gorm. Abierto (postgres. Abierto (dsn), &gorm. Configuración{})\n si error! = nulo {\norte devolver db, error\n }\n
Hacer ping a la base de datos para verificar el estado de la conexión
Puede hacer ping a su base de datos para verificar el estado de salud/en línea con una función que devuelve un resultado booleano o un error si la conexión de la base de datos no es válida.
funciónpingdb()(bool, error) {\n\n devolververdadero, nulo\n}\n
Deberá crear una nueva instancia de conexión para hacer ping a la base de datos. Aquí hay un ejemplo usando el Nueva conexión función para crear una instancia de conexión:
connectionInstance, err := NewConnection()\n si error! = nulo {\n registro. Fatalfo("La conexión a la base de datos falló %v", error Error())\n }\n
Una vez que haya obtenido una instancia de conexión, cree una instancia de base de datos con el base de datos método de la conexión.
dbConnection, err := connectionInstance. DB()\n si error! = nulo {\norte devolverFALSO, error\n } \n
Puede hacer ping a la base de datos con el Silbido método de la instancia de la base de datos. El Silbido método devuelve cualquier error o nulo si la conexión fue exitosa.
\n err = conexión db. hacer ping()\n si error! = nulo {\norte devolverFALSO, error\n } demás {\n\n base. imprimir("La conexión fue exitosa")\n }\n
Una ejecución exitosa debería dar como resultado un resultado similar a este:
Puede usar el paquete base de datos/sql para trabajar con la base de datos SQL en Go
El base de datos/sql El paquete es ampliable y, dado que la mayoría de los paquetes y controladores de bases de datos de Go amplían el paquete, puede utilizar el paquete en sus proyectos en lugar de optar por los ORM.
GORM también proporciona un generador de SQL para generar SQL sin procesar, lo que es útil para operaciones no admitidas.