Postgres Golang

Postgres Golang



Muitas vezes referido como Golang, Go é uma linguagem de programação de código aberto, compilada e tipada estaticamente, criada pelo Google. Ele foi desenvolvido para ser fácil de entender, rápido, claro e de alto desempenho.

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_postgres

Navegue até o diretório e inicialize um novo módulo Go.

$ cd golang_postgres && ir mod init principal

Instale 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 / pq

Criar 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 postgres

Este 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.go

Em seguida, edite o arquivo com o editor de texto de sua preferência:

$ porque main.go

No arquivo “main.go”, adicione o código-fonte conforme mostrado a seguir:

pacote principal

importar (
'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.go

Após a conexão, você deve obter a seguinte saída:

Conectado ao banco de dados

PostgreSQL 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.