O PostgreSQL, muitas vezes referido simplesmente como Postgres, é um poderoso sistema de banco de dados objeto-relacional de código aberto. Com mais de 30 anos de desenvolvimento ativo, ganhou uma forte reputação por sua robustez, recursos avançados e conformidade substancial com os padrões.
Ele foi projetado para lidar com cargas de trabalho extensas, de máquinas únicas a data warehouses ou serviços da Web com muitos usuários simultâneos. Ele fornece integridade transacional e durabilidade e oferece suporte a vários tipos de dados avançados e linguagem de manipulação de dados poderosa e flexível.
Este tutorial nos ensina como configurar e conectar um servidor PostgreSQL com um aplicativo Go.
Requisitos:
Ir Linguagem de Programação – Garante que o compilador Go esteja instalado em sua máquina.
Banco de Dados PostgreSQL – Você também precisa ter o PostgreSQL instalado. Você pode instalá-lo diretamente em sua máquina ou usar um contêiner do Docker para uma configuração mais direta.
Ferramentas de desenvolvimento – Um Ambiente de Desenvolvimento Integrado (IDE) que suporta Go como Visual Studio Code, GoLand, etc.
Conhecimento básico de SQL e Go – Para interagir com o banco de dados PostgreSQL, você deve entender o SQL e as diversas consultas que precisa realizar. Você também precisa de um conhecimento básico da linguagem Go.
Com os requisitos fornecidos atendidos, podemos prosseguir para as etapas a seguir.
Configuração do Projeto
Vamos começar configurando nossa estrutura de diretórios do projeto. Crie o diretório principal onde você precisa armazenar o código-fonte do projeto.
$ mkdir golang_postgresNavegue até o diretório e inicialize um novo módulo Go.
$ cd golang_postgres && ir mod init principalInstale os drivers necessários
Para interagir com o banco de dados PostgreSQL, precisamos de um driver PostgreSQL para a linguagem de programação Go.
Para este tutorial, utilizamos o driver pq que oferece uma ampla gama de recursos para trabalhar com o banco de dados PostgreSQL.
Você pode instalá-lo executando o seguinte comando:
acesse github.com / lib / pqCriar um banco de dados
O próximo passo é criar um novo banco de dados PostgreSQL. Novamente, podemos fazer isso no shell do PostgreSQL.
$ psql -EM postgresEste comando solicita a senha do arquivo postgres. Depois de logado, execute o comando “create database” para inicializar um novo banco de dados:
postgres=# cria banco de dados golang;CRIAR BANCO DE DADOS
O comando fornecido cria um novo banco de dados chamado “golang”. Sinta-se à vontade para substituir o nome do banco de dados pelo nome desejado.
Você pode verificar se o banco de dados foi criado com êxito conectando-se a ele.
postgres=# \c golang;Agora você está conectado ao banco de dados 'golang' como usuário 'postgres'.
Em seguida, configure a tabela onde deseja armazenar os dados. Criamos uma tabela simples para este tutorial que armazena as informações da sessão.
CREATE TABLE db_clients (id CHAVE PRIMÁRIA SERIAL,
nome VARCHAR(100) NÃO NULO,
session_time TIMESTAMP NÃO NULO,
number_of_queries INT DEFAULT 0,
estado_ativo BOOLEANO PADRÃO FALSO
);
A consulta fornecida deve criar uma nova tabela chamada “db_clients” que armazena uma informação sobre os clientes que estão logados em um determinado servidor de banco de dados.
Conecte o Go App com PostgreSQL
Depois de configurar o banco de dados e a tabela do banco de dados, podemos prosseguir e aprender como conectar nosso aplicativo Go com o servidor PostgreSQL.
Comece criando um arquivo “main.go” na raiz do seu projeto:
$ tocar main.goEm seguida, edite o arquivo com o editor de texto de sua preferência:
$ porque main.goNo arquivo “main.go”, adicione o código-fonte conforme mostrado a seguir:
pacote principalimportar (
'banco de dados/sql'
'fmt'
'registro'
_ 'github.com/lib/pq'
)
função principal ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
banco de dados, erro := sql.Open ( 'postgres' , connStr )
se errar ! = zero {
log.Fatal ( errar )
}
se err = db.Ping ( ) ; errar ! = zero {
log.Fatal ( errar )
}
fmt.Println ( 'Conectado ao banco de dados' )
}
No código anterior, começamos importando os módulos necessários. Em seguida, definimos a função principal. Por fim, na função principal, definimos a string de conexão que nos permite especificar o host de destino, o usuário do banco de dados, a senha do banco de dados e o banco de dados de destino real.
O módulo suporta os seguintes parâmetros na string de conexão:
- dbname – O nome do banco de dados ao qual se conectar.
- user – O usuário para entrar como.
- senha – A senha do usuário.
- host – O host ao qual se conectar. Os valores que começam com “/” são para soquetes de domínio Unix (o padrão é localhost).
- port – A porta a ser vinculada (o padrão é 5432).
- sslmode – Se deve ou não usar SSL (o padrão é require; este não é o padrão para libpq).
- fallback_application_name – Um application_name para o qual retornar se não for fornecido.
- connect_timeout – A espera máxima para conexão em segundos. Zero ou não especificado significa esperar indefinidamente.
- sslcert – O local do arquivo certificado. O arquivo deve conter os dados codificados por PEM.
- sslkey – O local do arquivo de chave. O arquivo deve conter os dados codificados por PEM.
- sslrootcert – A localização do arquivo de certificado raiz. O arquivo deve conter os dados codificados por PEM.
Você pode configurar suas propriedades de conexão de destino conforme necessário. Para configurar o SSL e os parâmetros SSLMode aceitos, consulte nosso tutorial em https://linuxhint.com/postgres-sslmode .
Uma vez satisfeito com as propriedades da conexão, você pode executar o código anterior para testar se a conexão foi estabelecida.
vá correr .\main.goApós a conexão, você deve obter a seguinte saída:
Conectado ao banco de dadosPostgreSQL Inserir dados na tabela
A próxima etapa é inserir os dados de amostra na tabela que criamos anteriormente. Podemos fazer isso definindo as consultas de inserção como uma string literal e, em seguida, usar a função db.Exec() para executar a consulta de destino.
O código é o seguinte:
---insertStatement := `INSERT INTO db_clients (nome, session_time, number_of_queries, active_state)
VALORES
('psql', '2023-05-26 10:15:00', 10, verdadeiro),
('datagrip', '2023-05-26 09:30:00', 5, verdadeiro),
('dbeaver', '2023-05-26 11:00:00', 20, verdadeiro),
('bancada', '2023-05-26 14:45:00', 15, falso),
('remoto', '2023-05-26 13:20:00', 8, verdadeiro);`
_, erro = db.Exec(insertStatement)
se errar != nil {
log.Fatal(err)
}
Se você executar o código anterior, ele deverá inserir os registros especificados na tabela de destino.
Dados de consulta do PostgreSQL
Para consultar as linhas da tabela, podemos definir a instrução select como uma string e usar db.Query() para executá-la. Podemos iterar sobre as linhas da tabela usando a função Next() e imprimi-las conforme mostrado a seguir:
linhas, erro := db.Query ( 'SELECT * FROM db_clients' )se errar ! = zero {
log.Fatal ( errar )
}
adiar linhas. Fechar ( )
para linhas.Próximo ( ) {
era eu ia int
string de nome var
var sessionTime time.Time
var numberOfQueries int
var activeState bool
err := rows.Scan ( & eu ia , & nome, & Tempo de sessão, & númeroDeConsultas, & estadoativo )
se errar ! = zero {
log.Fatal ( errar )
}
fmt.Printf ( 'ID: %d, Nome: %s, Tempo de Sessão: %s, Número de Consultas: %d, Estado Ativo: %t \n ' , eu ia , nome, sessionTime, numberOfQueries, activeState )
}
se err = linhas.Err ( ) ; errar ! = zero {
log.Fatal ( errar )
}
Depois de executar o código anterior, ele deve imprimir todas as linhas da tabela db_clients, conforme mostrado no seguinte exemplo de saída:
Aí está!
Conclusão
Exploramos como podemos usar o pacote pq para conectar e consultar o banco de dados PostgreSQL usando Golang.