Os bancos de dados SQL armazenam coleções de dados em linhas e colunas. Você pode recuperar e atualizar os dados em um sistema de gerenciamento de banco de dados relacional (RDBMS) usando a linguagem SQL. Dos muitos bancos de dados SQL disponíveis, os mais populares são MySQL, PostgreSQL, Microsoft SQL Server e SQLite.
A funcionalidade para interagir com bancos de dados em Go está no pacote database/sql, parte da biblioteca padrão.
O pacote database/sql interage com bancos de dados SQL usando drivers. Você pode importar um pacote de driver apropriado para seu RDBMS e usá-lo para interagir com o banco de dados.
Introdução aos bancos de dados SQL em Go
O pacote database/sql é uma interface genérica para bancos de dados relacionais. Para trabalhar com um servidor de banco de dados específico, você precisará usar um dos muitos drivers disponíveis.
Felizmente, você não precisa se preocupar com implementações específicas além do driver. O pacote database/sql lida com operações de banco de dados independentemente do servidor ao qual você está se conectando.
Alguns dos drivers de banco de dados Go mais populares são:
- Driver Go-SQL (MySQL)
- QP (PostgreSQL)
- Go-SQLite3 (SQLite)
- Banco de dados MSSQL (Microsoft SQL Server)
Você pode usar o Lista de drivers LibHunt encontrar equivalentes para outros tipos de banco de dados. A lista também mostra a popularidade relativa de cada sistema de banco de dados:
Instalando e importando drivers de banco de dados Go
Depois de criar um espaço de trabalho Go e inicializar um arquivo de módulos Go, instale o driver que corresponde ao seu sistema de banco de dados. Por exemplo, execute um dos seguintes comandos no diretório do seu espaço de trabalho para instalar o driver MySQL ou SQLite:
vá buscar -u github.com/go-sql-driver/mysql
acesse github.com/mattn/go-sqlite3
Depois de instalar seu driver, importe-o para efeitos colaterais prefixando um sublinhado antes do pacote. Por exemplo, para importar o driver MySQL junto com o pacote database/sql:
importar (
"banco de dados/sql"
_ "github.com/vai-sql-driver/mysql"
)
Ao importar o pacote de driver para efeitos colaterais, você pode usá-lo para se conectar e executar operações no banco de dados.
Conectando-se a um banco de dados SQL com Go
Após importar os drivers de banco de dados, você pode criar uma conexão de banco de dados usando o Abrir método do banco de dados/sql pacote. Esse método leva o nome e o caminho do driver para o banco de dados (para SQLite) ou uma string de conexão (para MySQL). Por exemplo, use um dos seguintes:
db, err := sql. Open("sqlite3", "models/testdb.db") // SQLite
db, err := sql. Open("mysql", "usuário: senha@/dbname") // MySQL
Depois de tentar abrir a conexão, lembre-se de verificar se há um erro:
E se err!= nada {
registro. Fataln (err)
}
Dependendo do seu sistema de banco de dados, o Abrir O método pode retornar um erro se o banco de dados não existir. Depois de se conectar a um banco de dados, você pode executar consultas e preparar instruções usando a instância de banco de dados que Abrir retorna.
Executando comandos SQL
Você pode executar comandos SQL usando o Preparar método de sua instância de banco de dados. o Preparar O método recebe um comando SQL e retorna uma instrução preparada para execução junto com um objeto de erro. Por exemplo, se você deseja criar uma nova tabela:
comando, err := db. Prepare("CREATE TABLE IF NOT EXISTS login (username TEXT, password TEXT)")
A instrução acima cria uma tabela chamada Conecte-se, caso ainda não exista. A nova tabela tem campos denominados nome de usuário e senha, cada um do tipo TEXTO.
Se você estiver inserindo valores de seu programa em suas consultas, poderá usar a notação de ponto de interrogação (?) para denotar espaços reservados e, em seguida, passar os parâmetros ao executar a instrução.
comando, err := db. Prepare("INSERT INTO login (username, password) valores(?,?)")
Depois de criar uma instrução preparada, você pode executá-la usando seu Executivo método. Este método permite que você passe valores de parâmetros do seu programa:
exec, err := comando. Exec (valor1, valor2)
E se err!= nada {
Retorna
}
O primeiro valor que Exec() retorna é o resultado da consulta SQL em seu banco de dados. Usando este resultado da consulta, você pode verificar o número de linhas afetadas ou o último ID inserido:
afetado, err := exec. Linhas Afetadas()
E se err!= nada {
Retorna
}fmt. Println (afetado)
id, err := exec. LastInsertId()
E se err!= nada {
Retorna
}
fmt. Println (id)
Buscando resultados da consulta
O pacote database/sql permite consultar os resultados do banco de dados usando o Consulta método de uma instância de banco de dados:
linhas, err := db. Query("SELECT * FROM User")
E se err!= nada {
Retorna
}
o Consulta método retorna um Linhas struct que você pode usar para trabalhar com seu conjunto de resultados. Por exemplo, você pode usar o Próximo método de sua instância de linhas para iterar sobre ela e trabalhar com linhas individuais:
var usuário senha corda
por linhas. Próximo() {
erro := linhas. Digitalizar(&nome de usuário, &senha)E se err!= nada {
registro. Fataln (err)
}
fmt. Println (nome de usuário, senha)
}
No exemplo acima, duas variáveis de string—nome de usuário e senha— representam cada valor de coluna. o Varredura O método decodifica a linha atual nessas variáveis correspondentes.
Bancos de dados SQL sempre são úteis
O uso de bancos de dados em Go é simples com o pacote database/sql. Você pode usá-lo para consultar e executar comandos SQL em Go com facilidade.
Os bancos de dados SQL estão no centro de muitos aplicativos, especialmente aqueles que lidam com conjuntos de dados grandes ou complexos. Você pode usar bancos de dados como o banco de dados SQLite na memória para seus projetos simples, como web scraping e criação de bots.
O conhecimento adequado de SQL e sistemas de gerenciamento de banco de dados é essencial para usá-los em seus programas com eficiência. No entanto, se você optar por não aprender SQL, poderá aprender a usar ORMs para interagir com bancos de dados SQL em Go.