Las bases de datos SQL almacenan colecciones de datos en filas y columnas. Puede recuperar y actualizar los datos en un sistema de administración de bases de datos relacionales (RDBMS) utilizando el lenguaje SQL. De las muchas bases de datos SQL disponibles, las más populares son MySQL, PostgreSQL, Microsoft SQL Server y SQLite.
La funcionalidad para interactuar con bases de datos en Go está en el paquete base de datos/sql, parte de la biblioteca estándar.
El paquete base de datos/sql interactúa con las bases de datos SQL mediante controladores. Puede importar un paquete de controlador apropiado para su RDBMS y usarlo para interactuar con la base de datos.
Introducción a las bases de datos SQL en Go
El paquete database/sql es una interfaz genérica para bases de datos relacionales. Para trabajar con un servidor de base de datos específico, deberá usar uno de los muchos controladores disponibles.
Afortunadamente, no tiene que preocuparse por implementaciones específicas más allá del controlador. El paquete base de datos/sql maneja las operaciones de la base de datos independientemente del servidor al que se esté conectando.
Algunos de los controladores de base de datos Go más populares son:
- Controlador Go-SQL (MySQL)
- PQ (PostgreSQL)
- Go-SQLite3 (SQLite)
- Base de datos MSSQL (Servidor de Microsoft SQL)
Puedes usar el Lista de controladores de LibHunt encontrar equivalentes para otros tipos de bases de datos. La lista también muestra la popularidad relativa de cada sistema de base de datos:
Instalación e importación de controladores de base de datos Go
Una vez que haya creado un espacio de trabajo de Go e inicializado un archivo de módulos de Go, instale el controlador que coincida con su sistema de base de datos. Por ejemplo, ejecute uno de los siguientes comandos en el directorio de su espacio de trabajo para instalar el controlador MySQL o SQLite:
ve a buscar -u github.com/go-sql-driver/mysql
ve a github.com/mattn/go-sqlite3
Después de instalar su controlador, impórtelo para efectos secundarios agregando un guión bajo antes del paquete. Por ejemplo, para importar el controlador MySQL junto con el paquete base de datos/sql:
importar (
"base de datos/sql"
_ "github.com/Vamos-sql-controlador/mysql"
)
Al importar el paquete de controladores para efectos secundarios, puede usarlo para conectarse y ejecutar operaciones en la base de datos.
Conexión a una base de datos SQL con Go
Después de importar los controladores de la base de datos, puede crear una conexión de base de datos usando el Abierto metodo de la base de datos/sql paquete. Este método toma el nombre del controlador y la ruta a la base de datos (para SQLite) o una cadena de conexión (para MySQL). Por ejemplo, utilice cualquiera de los siguientes:
db, error: = sql. Abrir("sqlite3", "modelos/testdb.db") // SQLite
db, error: = sql. Abrir("mysql", "usuario: contraseña@/nombrebd") // MySQL
Una vez que haya intentado abrir la conexión, recuerde verificar si hay un error:
si error! = nulo {
Iniciar sesión. fatal (err)
}
Dependiendo de su sistema de base de datos, el Abierto El método puede devolver un error si la base de datos no existe. Una vez que se haya conectado a una base de datos, puede ejecutar consultas y preparar declaraciones utilizando la instancia de la base de datos que Abierto devoluciones.
Ejecutar comandos SQL
Puedes ejecutar comandos SQL utilizando el Preparar método de su instancia de base de datos. los Preparar El método toma un comando SQL y devuelve una declaración preparada para su ejecución junto con un objeto de error. Por ejemplo, si desea crear una nueva tabla:
comando, error := db. Preparar("CREAR TABLA SI NO EXISTE iniciar sesión (nombre de usuario TEXTO, contraseña TEXTO)")
La declaración anterior crea una tabla llamada acceso, si aún no existe. La nueva tabla tiene campos llamados nombre de usuario y clave, cada uno de tipo TEXTO.
Si está insertando valores de su programa en sus consultas, puede usar la notación de signo de interrogación (?) para indicar marcadores de posición y luego pasar los parámetros al ejecutar la declaración.
comando, error := db. Prepare ("INSERTAR EN los valores de inicio de sesión (nombre de usuario, contraseña) (?,?)")
Una vez que haya creado una declaración preparada, puede ejecutarla usando su Ejecutivo método. Este método le permite pasar valores de parámetros de su programa:
exec, errar := comando. Ejecutiva (valor1, Valor2)
si error! = nulo {
devolver
}
El primer valor que Ejecutivo() devuelve es el resultado de la consulta SQL en su base de datos. Con el resultado de esta consulta, puede comprobar el número de filas afectadas o el último ID insertado:
afectado, err := exec. FilasAfectadas()
si error! = nulo {
devolver
}fmt. Println (afectado)
id, error: = exec. LastInsertId()
si error! = nulo {
devolver
}
fmt. Imprimir (id)
Obtención de resultados de consulta
El paquete base de datos/sql le permite consultar los resultados de la base de datos usando el Consulta método de una instancia de base de datos:
filas, error: = db. Consulta("SELECCIONAR * DEL Usuario")
si error! = nulo {
devolver
}
los Consulta método devuelve un filas estructura que puede usar para trabajar con su conjunto de resultados. Por ejemplo, puede utilizar el próximo método de su instancia de filas para iterar sobre él y trabajar con filas individuales:
variable usuario Contraseña cuerda
por filas Próximo() {
error := filas. Escanear (&nombre de usuario, &contraseña)si error! = nulo {
Iniciar sesión. fatal (err)
}
fmt. Println (nombre de usuario, contraseña)
}
En el ejemplo anterior, dos variables de cadena—nombre de usuario y clave: representan el valor de cada columna. los Escanear El método decodifica la fila actual en esas variables correspondientes.
Las bases de datos SQL siempre son útiles
El uso de bases de datos en Go es sencillo con el paquete database/sql. Puede usarlo para consultar y ejecutar comandos SQL en Go con facilidad.
Las bases de datos SQL son el núcleo de muchas aplicaciones, especialmente aquellas que manejan conjuntos de datos grandes o complejos. Puede usar bases de datos como la base de datos SQLite en memoria para sus proyectos simples como web scraping y creación de bots.
El conocimiento adecuado de los sistemas de administración de bases de datos y SQL es esencial para usarlos en sus programas de manera eficiente. Sin embargo, si elige no aprender SQL, puede aprender a usar ORM para interactuar con bases de datos SQL en Go.