Início Rápido: Usar a linguagem Go para se conectar e consultar dados no Banco de Dados do Azure para PostgreSQL – servidor único
APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Único
Importante
O Banco de Dados do Azure para PostgreSQL – Servidor Único está prestes a ser desativado. É altamente recomendável atualizar para o Banco de Dados do Azure para PostgreSQL – Servidor Flexível. Para obter mais informações sobre a migração para o Banco de Dados do Azure para PostgreSQL – Servidor Flexível, veja O que está acontecendo com o Banco de Dados do Azure para PostgreSQL Servidor único?.
Este guia de início rápido demonstra como se conectar a um banco de dados do Azure para PostgreSQL usando código escrito na linguagem Go (golang). Ele mostra como usar instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados. Este artigo pressupõem que você está familiarizado com o desenvolvimento usando Go, mas que começou recentemente a trabalhar com o Banco de Dados do Azure para PostgreSQL.
Pré-requisitos
Este guia de início rápido usa os recursos criados em um destes guias como ponto de partida:
Instalar o conector pq e o Go
Instale o Go e o driver de Postgres Go puro(pq) em seu próprio computador. Dependendo da sua plataforma, siga as etapas apropriadas:
Windows
Baixe e instale o Go para Microsoft Windows de acordo com as instruções de instalação.
Inicie o prompt de comando no menu Iniciar.
Crie uma pasta para o seu projeto, como
mkdir %USERPROFILE%\go\src\postgresqlgo
.Altere o diretório na pasta do projeto, como
cd %USERPROFILE%\go\src\postgresqlgo
.Defina a variável de ambiente para GOPATH apontar para o diretório de código de origem.
set GOPATH=%USERPROFILE%\go
.Instale o driver de Postgres Go puro (pq) executando o comando
go get github.com/lib/pq
.Em resumo, instale o Go e execute esses comandos no prompt de comando:
mkdir %USERPROFILE%\go\src\postgresqlgo cd %USERPROFILE%\go\src\postgresqlgo set GOPATH=%USERPROFILE%\go go get github.com/lib/pq
Linux (Ubuntu)
Abra o shell do Bash.
Instale o Go executando
sudo apt-get install golang-go
.Crie uma pasta para o seu projeto em seu diretório inicial, como
mkdir -p ~/go/src/postgresqlgo/
.Altere o diretório na pasta, como
cd ~/go/src/postgresqlgo/
.Defina a variável de ambiente GOPATH para apontar para um diretório de origem válido, como a pasta atual inicial do diretório do Go. No shell bash, execute
export GOPATH=~/go
para adicionar o diretório do Go como GOPATH para a sessão atual do shell.Instale o driver de Postgres Go puro (pq) executando o comando
go get github.com/lib/pq
.Em resumo, execute estes comandos bash:
sudo apt-get install golang-go mkdir -p ~/go/src/postgresqlgo/ cd ~/go/src/postgresqlgo/ export GOPATH=~/go/ go get github.com/lib/pq
Apple macOS
Baixe e instale o Go de acordo com as instruções de instalação correspondentes à plataforma.
Abra o shell do Bash.
Crie uma pasta para o seu projeto em seu diretório inicial, como
mkdir -p ~/go/src/postgresqlgo/
.Altere o diretório na pasta, como
cd ~/go/src/postgresqlgo/
.Defina a variável de ambiente GOPATH para apontar para um diretório de origem válido, como a pasta atual inicial do diretório do Go. No shell bash, execute
export GOPATH=~/go
para adicionar o diretório do Go como GOPATH para a sessão atual do shell.Instale o driver de Postgres Go puro (pq) executando o comando
go get github.com/lib/pq
.Em resumo, instale o Go e, em seguida, execute esses comandos bash:
mkdir -p ~/go/src/postgresqlgo/ cd ~/go/src/postgresqlgo/ export GOPATH=~/go/ go get github.com/lib/pq
Obter informações de conexão
Obtenha as informações de conexão necessárias para se conectar ao Banco de Dados do Azure para PostgreSQL. Você precisa das credenciais de logon e do nome do servidor totalmente qualificado.
- Faça logon no Portal do Azure.
- No menu à esquerda no portal do Azure, selecione Todos os recursos e pesquise o servidor que você criou (como mydemoserver).
- Selecione o nome do servidor.
- No painel Visão Geral do servidor, anote o Nome do servidor e Nome de logon do administrador do servidor. Se você esquecer sua senha, também poderá redefini-la nesse painel.
Compilar e executar o código Go
- Para escrever código Golang, você pode usar um editor de texto sem formatação, como o Bloco de Notas no Microsoft Windows, vi ou Nano no Ubuntu ou TextEdit no macOS. Se você preferir um IDE (Ambiente de Desenvolvimento Integrado) mais avançado, experimente o GoLand da Jetbrains, o Visual Studio Code da Microsoft ou o Atom.
- Cole o código Golang das seções a seguir em arquivos de texto e salve-os na pasta de projeto com a extensão de arquivo *.go, como caminho do Windows
%USERPROFILE%\go\src\postgresqlgo\createtable.go
ou caminho do Linux~/go/src/postgresqlgo/createtable.go
. - Localize as constantes
HOST
,DATABASE
,USER
, ePASSWORD
no código e substitua os valores de exemplo com seus próprios valores. - Inicie o prompt de comando ou shell Bash. Altere o diretório na pasta do seu projeto. Por exemplo, no Windows
cd %USERPROFILE%\go\src\postgresqlgo\
. No Linuxcd ~/go/src/postgresqlgo/
. Alguns dos ambientes IDE mencionados oferecem recursos de depuração e runtime sem a necessidade de comandos do shell. - Execute o código, digitando o comando
go run createtable.go
para compilar o aplicativo e executá-lo. - Como alternativa, para compilar o código em um aplicativo nativo,
go build createtable.go
, iniciecreatetable.exe
para executar o aplicativo.
Conectar-se e criar uma tabela
Use o código a seguir para se conectar e criar uma tabela usando a instrução SQL CREATE TABLE, seguida por instruções SQL INSERT INTO para adicionar linhas à tabela.
O código importa três pacotes: o pacote sql, o pacote pq como um driver para se comunicar com o servidor PostgreSQL e o pacote fmt para entrada e saída impressa na linha de comando.
O código chama o método sql. Open () para se conectar ao Banco de Dados do Azure para PostgreSQL e verifica a conexão usando o método db.Ping(). Um identificador de banco de dados é usado em todo o processo, mantendo o pool de conexão para o servidor de banco de dados. O código chama o método Exec() várias vezes para executar vários comandos SQL. Sempre que um método personalizado checkError() verificar se ocorreu um erro e for necessário sair em caso de erro.
Substitua os parâmetros HOST
, DATABASE
, USER
, e PASSWORD
pelos seus próprios valores.
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
const (
// Initialize connection constants.
HOST = "mydemoserver.postgres.database.azure.com"
DATABASE = "mypgsqldb"
USER = "mylogin@mydemoserver"
PASSWORD = "<server_admin_password>"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString string = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)
// Initialize connection object.
db, err := sql.Open("postgres", connectionString)
checkError(err)
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database")
// Drop previous table of same name if one exists.
_, err = db.Exec("DROP TABLE IF EXISTS inventory;")
checkError(err)
fmt.Println("Finished dropping table (if existed)")
// Create table.
_, err = db.Exec("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
checkError(err)
fmt.Println("Finished creating table")
// Insert some data into table.
sql_statement := "INSERT INTO inventory (name, quantity) VALUES ($1, $2);"
_, err = db.Exec(sql_statement, "banana", 150)
checkError(err)
_, err = db.Exec(sql_statement, "orange", 154)
checkError(err)
_, err = db.Exec(sql_statement, "apple", 100)
checkError(err)
fmt.Println("Inserted 3 rows of data")
}
Ler dados
Use o código a seguir para conectar-se e ler os dados usando uma instrução SQL SELECT.
O código importa três pacotes: o pacote sql, o pacote pq como um driver para se comunicar com o servidor PostgreSQL e o pacote fmt para entrada e saída impressa na linha de comando.
O código chama o método sql. Open () para se conectar ao Banco de Dados do Azure para PostgreSQL e verifica a conexão usando o método db.Ping(). Um identificador de banco de dados é usado em todo o processo, mantendo o pool de conexão para o servidor de banco de dados. A consulta select é executada chamando o método db.Query(), e as linhas resultantes são mantidas em uma variável do tipo linhas. O código lê a coluna de valores de dados na linha atual usando o método rows.Scan() e loops em relação às linhas usando o iterador rows.Next () até que não haja mais linhas. Os valores de coluna de cada linha são impressos no console de saída. A cada ocorrência, um método personalizado checkError() é usado para verificar se ocorreu um erro e se é necessário sair em caso de erro.
Substitua os parâmetros HOST
, DATABASE
, USER
, e PASSWORD
pelos seus próprios valores.
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
const (
// Initialize connection constants.
HOST = "mydemoserver.postgres.database.azure.com"
DATABASE = "mypgsqldb"
USER = "mylogin@mydemoserver"
PASSWORD = "<server_admin_password>"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString string = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)
// Initialize connection object.
db, err := sql.Open("postgres", connectionString)
checkError(err)
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database")
// Read rows from table.
var id int
var name string
var quantity int
sql_statement := "SELECT * from inventory;"
rows, err := db.Query(sql_statement)
checkError(err)
defer rows.Close()
for rows.Next() {
switch err := rows.Scan(&id, &name, &quantity); err {
case sql.ErrNoRows:
fmt.Println("No rows were returned")
case nil:
fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
default:
checkError(err)
}
}
}
Atualizar dados
Use o código a seguir para conectar-se e atualizar os dados usando uma instrução SQL UPDATE.
O código importa três pacotes: o pacote sql, o pacote pq como driver para se comunicar com o servidor Postgres e o fmt pacote para impressão de entrada e saída na linha de comando.
O código chama o método sql. Open () para se conectar ao Banco de Dados do Azure para PostgreSQL e verifica a conexão usando o método db.Ping(). Um identificador de banco de dados é usado em todo o processo, mantendo o pool de conexão para o servidor de banco de dados. O código chama o método Exec() para executar a instrução SQL que atualiza a tabela. Um método personalizado checkError() é usado para verificar se ocorreu um erro e se é necessário sair em caso de erro.
Substitua os parâmetros HOST
, DATABASE
, USER
, e PASSWORD
pelos seus próprios valores.
package main
import (
"database/sql"
_ "github.com/lib/pq"
"fmt"
)
const (
// Initialize connection constants.
HOST = "mydemoserver.postgres.database.azure.com"
DATABASE = "mypgsqldb"
USER = "mylogin@mydemoserver"
PASSWORD = "<server_admin_password>"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString string =
fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)
// Initialize connection object.
db, err := sql.Open("postgres", connectionString)
checkError(err)
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database")
// Modify some data in table.
sql_statement := "UPDATE inventory SET quantity = $2 WHERE name = $1;"
_, err = db.Exec(sql_statement, "banana", 200)
checkError(err)
fmt.Println("Updated 1 row of data")
}
Excluir dados
Use o código a seguir para conectar-se e excluir os dados usando uma instrução SQL DELETE.
O código importa três pacotes: o pacote sql, o pacote pq como driver para se comunicar com o servidor Postgres e o fmt pacote para impressão de entrada e saída na linha de comando.
O código chama o método sql. Open () para se conectar ao Banco de Dados do Azure para PostgreSQL e verifica a conexão usando o método db.Ping(). Um identificador de banco de dados é usado em todo o processo, mantendo o pool de conexão para o servidor de banco de dados. O código chama o método Exec() para executar a instrução SQL que exclui uma linha da tabela. Um método personalizado checkError() é usado para verificar se ocorreu um erro e se é necessário sair em caso de erro.
Substitua os parâmetros HOST
, DATABASE
, USER
, e PASSWORD
pelos seus próprios valores.
package main
import (
"database/sql"
_ "github.com/lib/pq"
"fmt"
)
const (
// Initialize connection constants.
HOST = "mydemoserver.postgres.database.azure.com"
DATABASE = "mypgsqldb"
USER = "mylogin@mydemoserver"
PASSWORD = "<server_admin_password>"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString string =
fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)
// Initialize connection object.
db, err := sql.Open("postgres", connectionString)
checkError(err)
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database")
// Delete some data from table.
sql_statement := "DELETE FROM inventory WHERE name = $1;"
_, err = db.Exec(sql_statement, "orange")
checkError(err)
fmt.Println("Deleted 1 row of data")
}
Limpar os recursos
Para limpar todos os recursos usados durante este guia de início rápido, exclua o grupo de recursos usando o seguinte comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes