Banco de dados do Azure para PostgreSQL-servidor único: usar o idioma Go para se conectar e consultar dadosAzure Database for PostgreSQL - Single Server: Use Go language to connect and query data

Este início rápido explica como se pode ligar a uma Base de Dados do Azure para PostgreSQL através de código escrito na linguagem Go (golang).This quickstart demonstrates how to connect to an Azure Database for PostgreSQL using code written in the Go language (golang). Explica como utilizar as instruções SQL para consultar, inserir, atualizar e eliminar dados da base de dados.It shows how to use SQL statements to query, insert, update, and delete data in the database. Este artigo pressupõe que esteja familiarizado com o desenvolvimento que utiliza o Go, mas que nunca trabalhou com a base de dados do Azure para PostgreSQL.This article assumes you are familiar with development using Go, but that you are new to working with Azure Database for PostgreSQL.

Pré-requisitosPrerequisites

Este guia de início rápido utiliza os recursos criados em qualquer um destes guias como ponto de partida:This quickstart uses the resources created in either of these guides as a starting point:

Instalar o Go e o conector pqInstall Go and pq connector

Instale o Go e o controlador Pure Go Postgres (pq) no seu computador.Install Go and the Pure Go Postgres driver (pq) on your own machine. Dependendo da sua plataforma, siga os passos apropriados:Depending on your platform, follow the appropriate steps:

WindowsWindows

  1. Transfira e instale o Go para o Microsoft Windows, de acordo com as instruções de instalação.Download and install Go for Microsoft Windows according to the installation instructions.

  2. Inicie a linha de comandos a partir do menu Iniciar.Launch the command prompt from the start menu.

  3. Crie uma pasta para o seu projeto, como mkdir %USERPROFILE%\go\src\postgresqlgo.Make a folder for your project, such as mkdir %USERPROFILE%\go\src\postgresqlgo.

  4. Altere o diretório para a pasta do projeto, como cd %USERPROFILE%\go\src\postgresqlgo.Change directory into the project folder, such as cd %USERPROFILE%\go\src\postgresqlgo.

  5. Defina a variável de ambiente de GOPATH para apontar para o diretório do código de origem.Set the environment variable for GOPATH to point to the source code directory. set GOPATH=%USERPROFILE%\go.set GOPATH=%USERPROFILE%\go.

  6. Execute o comando go get github.com/lib/pq para instalar o controlador Pure Go Postgres (pq).Install the Pure Go Postgres driver (pq) by running the go get github.com/lib/pq command.

    Para resumir, instale o Go e, em seguida, execute estes comandos na linha de comandos:In summary, install Go, then run these commands in the command prompt:

    mkdir  %USERPROFILE%\go\src\postgresqlgo
    cd %USERPROFILE%\go\src\postgresqlgo
    set GOPATH=%USERPROFILE%\go
    go get github.com/lib/pq
    

Linux (Ubuntu)Linux (Ubuntu)

  1. Inicie a shell de Bash.Launch the Bash shell.

  2. Execute sudo apt-get install golang-go para instalar o Go.Install Go by running sudo apt-get install golang-go.

  3. Crie uma pasta para o projeto no seu diretório raiz, como mkdir -p ~/go/src/postgresqlgo/.Make a folder for your project in your home directory, such as mkdir -p ~/go/src/postgresqlgo/.

  4. Altere o diretório para a pasta, como cd ~/go/src/postgresqlgo/.Change directory into the folder, such as cd ~/go/src/postgresqlgo/.

  5. Defina a variável de ambiente GOPATH para apontar para um diretório de origem válido, como a pasta do go do diretório raiz atual.Set the GOPATH environment variable to point to a valid source directory, such as your current home directory's go folder. Na shell do bash, execute export GOPATH=~/go para adicionar o diretório do go como o GOPATH da sessão de shell atual.At the bash shell, run export GOPATH=~/go to add the go directory as the GOPATH for the current shell session.

  6. Execute o comando go get github.com/lib/pq para instalar o controlador Pure Go Postgres (pq).Install the Pure Go Postgres driver (pq) by running the go get github.com/lib/pq command.

    Em resumo, execute estes comandos do bash:In summary, run these bash commands:

    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 macOSApple macOS

  1. Transfira e instale o Go em conformidade com as instruções de instalação da sua plataforma.Download and install Go according to the installation instructions matching your platform.

  2. Inicie a shell de Bash.Launch the Bash shell.

  3. Crie uma pasta para o projeto no seu diretório raiz, como mkdir -p ~/go/src/postgresqlgo/.Make a folder for your project in your home directory, such as mkdir -p ~/go/src/postgresqlgo/.

  4. Altere o diretório para a pasta, como cd ~/go/src/postgresqlgo/.Change directory into the folder, such as cd ~/go/src/postgresqlgo/.

  5. Defina a variável de ambiente GOPATH para apontar para um diretório de origem válido, como a pasta do go do diretório raiz atual.Set the GOPATH environment variable to point to a valid source directory, such as your current home directory's go folder. Na shell do bash, execute export GOPATH=~/go para adicionar o diretório do go como o GOPATH da sessão de shell atual.At the bash shell, run export GOPATH=~/go to add the go directory as the GOPATH for the current shell session.

  6. Execute o comando go get github.com/lib/pq para instalar o controlador Pure Go Postgres (pq).Install the Pure Go Postgres driver (pq) by running the go get github.com/lib/pq command.

    Em resumo, instale o Go e execute estes comandos do bash:In summary, install Go, then run these bash commands:

    mkdir -p ~/go/src/postgresqlgo/
    cd ~/go/src/postgresqlgo/
    export GOPATH=~/go/
    go get github.com/lib/pq
    

Obter informações da ligaçãoGet connection information

Obtenha as informações de ligação necessárias para se ligar à Base de Dados do Azure para PostgreSQL.Get the connection information needed to connect to the Azure Database for PostgreSQL. Necessita do nome do servidor e das credenciais de início de sessão totalmente qualificados.You need the fully qualified server name and login credentials.

  1. Inicie sessão no Portal do Azure.Log in to the Azure portal.
  2. No menu esquerdo do portal do Azure, clique em Todos os recursos e, em seguida, procure o servidor que acabou de criar, (por exemplo, mydemoserver).From the left-hand menu in Azure portal, click All resources, and then search for the server you have created (such as mydemoserver).
  3. Clique no nome do servidor.Click the server name.
  4. No painel Descrição geral do servidor, tome nota do Nome do servidor e do Nome de início de sessão de administrador do servidor.From the server's Overview panel, make a note of the Server name and Server admin login name. Caso se esqueça da sua palavra-passe, também pode repor a palavra-passe neste painel.If you forget your password, you can also reset the password from this panel. Nome do servidor da Base de Dados do Azure para PostgreSQLAzure Database for PostgreSQL server name

Criar e executar código GoBuild and run Go code

  1. Para escrever o código Golang, pode utilizar um editor de textos simples, como o Bloco de Notas no Microsoft Windows, o vi ou o Nano no Ubuntu ou o TextEdit em macOS.To write Golang code, you can use a plain text editor, such as Notepad in Microsoft Windows, vi or Nano in Ubuntu, or TextEdit in macOS. Se você preferir um IDE (ambiente de desenvolvimento interativo) mais rico, tente GoLand por Jetbrains, Visual Studio Code pela Microsoft ou Atom.If you prefer a richer Interactive Development Environment (IDE) try GoLand by Jetbrains, Visual Studio Code by Microsoft, or Atom.
  2. Cole o código Golang das secções seguintes em ficheiros de texto e guarde-os na pasta do projeto com a extensão de ficheiro *.go, como, por exemplo, o caminho do Windows %USERPROFILE%\go\src\postgresqlgo\createtable.go ou o caminho do Linux ~/go/src/postgresqlgo/createtable.go.Paste the Golang code from the following sections into text files, and save into your project folder with file extension *.go, such as Windows path %USERPROFILE%\go\src\postgresqlgo\createtable.go or Linux path ~/go/src/postgresqlgo/createtable.go.
  3. Localize as constantes HOST, DATABASE, USER e PASSWORD no código e substitua os valores de exemplo pelos seus próprios valores.Locate the HOST, DATABASE, USER, and PASSWORD constants in the code, and replace the example values with your own values.
  4. Inicie a linha de comandos ou a shell de bash.Launch the command prompt or bash shell. Altere o diretório para a pasta do projeto .Change directory into your project folder. Por exemplo, no Windows cd %USERPROFILE%\go\src\postgresqlgo\.For example, on Windows cd %USERPROFILE%\go\src\postgresqlgo\. No Linux, cd ~/go/src/postgresqlgo/.On Linux cd ~/go/src/postgresqlgo/. Alguns dos ambientes IDE mencionados oferecem capacidades de depuração e runtime sem que sejam necessários comandos da shell.Some of the IDE environments mentioned offer debug and runtime capabilities without requiring shell commands.
  5. Execute o código com o comando go run createtable.go, para compilar a aplicação e executá-la.Run the code by typing the command go run createtable.go to compile the application and run it.
  6. Em alternativa, para criar o código numa aplicação nativa, go build createtable.go, e inicie createtable.exe para executar a aplicação.Alternatively, to build the code into a native application, go build createtable.go, then launch createtable.exe to run the application.

Ligar e criar uma tabelaConnect and create a table

Utilize o código seguinte para ligar e criar uma tabela com a instrução SQL CREATE TABLE, seguida das instruções SQL INSERT INTO para adicionar linhas à tabela.Use the following code to connect and create a table using CREATE TABLE SQL statement, followed by INSERT INTO SQL statements to add rows into the table.

O código importa três pacotes: o pacote sql, o pacote pq como um controlador para comunicar com o servidor PostgreSQL e o pacote fmt para entrada e saída de dados impressos na linha de comandos.The code imports three packages: the sql package, the pq package as a driver to communicate with the PostgreSQL server, and the fmt package for printed input and output on the command line.

O código chama o método sql.Open() para ligar à base de dados da Base de Dados do Azure para PostgreSQL e verifica a ligação através do método db.Ping().The code calls method sql.Open() to connect to Azure Database for PostgreSQL database, and checks the connection using method db.Ping(). É utilizado um identificador de base de dados ao manter o conjunto de ligações para o servidor da base de dados.A database handle is used throughout, holding the connection pool for the database server. O código chama o métodoExec() várias vezes para executar vários comandos SQL.The code calls the Exec() method several times to run several SQL commands. Sempre que seja chamado um método checkError() personalizado verifica se ocorreu um erro e pânico para sair se ocorrer um erro.Each time a custom checkError() method checks if an error occurred and panic to exit if an error does occur.

Substitua os parâmetros HOST, DATABASE, USER e PASSWORD pelos seus próprios valores.Replace the HOST, DATABASE, USER, and PASSWORD parameters with your own values.

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 dadosRead data

Utilize o código seguinte para se ligar e ler dados com uma instrução SQL SELECT.Use the following code to connect and read the data using a SELECT SQL statement.

O código importa três pacotes: o pacote sql, o pacote pq como um controlador para comunicar com o servidor PostgreSQL e o pacote fmt para entrada e saída de dados impressos na linha de comandos.The code imports three packages: the sql package, the pq package as a driver to communicate with the PostgreSQL server, and the fmt package for printed input and output on the command line.

O código chama o método sql.Open() para ligar à base de dados da Base de Dados do Azure para PostgreSQL e verifica a ligação através do método db.Ping().The code calls method sql.Open() to connect to Azure Database for PostgreSQL database, and checks the connection using method db.Ping(). É utilizado um identificador de base de dados ao manter o conjunto de ligações para o servidor da base de dados.A database handle is used throughout, holding the connection pool for the database server. A consulta select é executada ao chamar o método db.Query() e as linhas resultantes são mantidas numa variável do tipo rows.The select query is run by calling method db.Query(), and the resulting rows are kept in a variable of type rows. O código lê os valores de dados de coluna na linha atual através do método rows.Scan() e cria ciclos nas linhas através do iterador rows.Next() até não existirem mais linhas.The code reads the column data values in the current row using method rows.Scan() and loops over the rows using the iterator rows.Next() until no more rows exist. Os valores de coluna de cada linha são impressos no console. Cada vez que um método checkError () personalizado é usado para verificar se ocorreu um erro e se há pane para sair se ocorrer um erro.Each row's column values are printed to the console out. Each time a custom checkError() method is used to check if an error occurred and panic to exit if an error does occur.

Substitua os parâmetros HOST, DATABASE, USER e PASSWORD pelos seus próprios valores.Replace the HOST, DATABASE, USER, and PASSWORD parameters with your own values.

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 dadosUpdate data

Utilize o código seguinte para se ligar e atualizar os dados com uma instrução SQL UPDATE.Use the following code to connect and update the data using an UPDATE SQL statement.

O código importa três pacotes: o pacote sql, o pacote pq como um controlador para comunicar com o servidor Postgres e o pacote fmt para entrada e saída de dados impressos na linha de comandos.The code imports three packages: the sql package, the pq package as a driver to communicate with the Postgres server, and the fmt package for printed input and output on the command line.

O código chama o método sql.Open() para ligar à base de dados da Base de Dados do Azure para PostgreSQL e verifica a ligação através do método db.Ping().The code calls method sql.Open() to connect to Azure Database for PostgreSQL database, and checks the connection using method db.Ping(). É utilizado um identificador de base de dados ao manter o conjunto de ligações para o servidor da base de dados.A database handle is used throughout, holding the connection pool for the database server. O código chama o método Exec() para executar a instrução SQL que atualiza a tabela.The code calls the Exec() method to run the SQL statement that updates the table. É utilizado um método checkError() personalizado para verificar se ocorreu um erro e pânico para sair se ocorrer um erro.A custom checkError() method is used to check if an error occurred and panic to exit if an error does occur.

Substitua os parâmetros HOST, DATABASE, USER e PASSWORD pelos seus próprios valores.Replace the HOST, DATABASE, USER, and PASSWORD parameters with your own values.

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")
}

Eliminar dadosDelete data

Utilize o código seguinte para se ligar e eliminar os dados com a instrução SQL DELETE.Use the following code to connect and delete the data using a DELETE SQL statement.

O código importa três pacotes: o pacote sql, o pacote pq como um controlador para comunicar com o servidor Postgres e o pacote fmt para entrada e saída de dados impressos na linha de comandos.The code imports three packages: the sql package, the pq package as a driver to communicate with the Postgres server, and the fmt package for printed input and output on the command line.

O código chama o método sql.Open() para ligar à base de dados da Base de Dados do Azure para PostgreSQL e verifica a ligação através do método db.Ping().The code calls method sql.Open() to connect to Azure Database for PostgreSQL database, and checks the connection using method db.Ping(). É utilizado um identificador de base de dados ao manter o conjunto de ligações para o servidor da base de dados.A database handle is used throughout, holding the connection pool for the database server. O código chama o método Exec() para executar a instrução SQL que elimina uma linha da tabela.The code calls the Exec() method to run the SQL statement that deletes a row from the table. É utilizado um método checkError() personalizado para verificar se ocorreu um erro e pânico para sair se ocorrer um erro.A custom checkError() method is used to check if an error occurred and panic to exit if an error does occur.

Substitua os parâmetros HOST, DATABASE, USER e PASSWORD pelos seus próprios valores.Replace the HOST, DATABASE, USER, and PASSWORD parameters with your own values.

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")
}

Passos seguintesNext steps