Início Rápido: Usar a linguagem Go para se conectar e consultar dados no Banco de Dados do Azure para MySQL
APLICA-SE A: Banco de Dados do Azure para MySQL – Servidor Único
Importante
O servidor único do Banco de Dados do Azure para MySQL está no caminho da desativação. É altamente recomendável que você atualize para o servidor flexível do Banco de Dados do Azure para MySQL. Para obter mais informações sobre a migração para o servidor flexível do Banco de Dados do Azure para MySQL, confira O que está acontecendo com o Servidor Único do Banco de Dados do Azure para MySQL?
Este guia de início rápido mostra como se conectar a um Banco de Dados do Azure para MySQL usando código escrito na linguagem Go em plataformas Windows, Ubuntu Linux e Apple macOS. Ele mostra como usar instruções SQL para consultar, inserir, atualizar e excluir dados no banco de dados. Este tópico pressupõe que você está familiarizado com o desenvolvimento usando Go e começou recentemente a trabalhar com o Banco de Dados do Azure para MySQL.
Pré-requisitos
Este guia de início rápido usa os recursos criados em um destes guias como ponto de partida:
- Criar um servidor de Banco de Dados do Azure para MySQL usando o portal do Azure
- Criar um servidor de Banco de Dados do Azure para MySQL usando a CLI do Azure
Importante
Verifique se o endereço IP do qual você está se conectando foi adicionado às regras de firewall do servidor usando o portal do Azure ou a CLI do Azure
Instalar o conector MySQL e Go
Instale o Go e o go-sql-driver para MySQL em seu próprio computador. Dependendo da sua plataforma, siga as etapas na seção apropriada:
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\mysqlgo
.Altere o diretório na pasta do projeto, como
cd %USERPROFILE%\go\src\mysqlgo
.Defina a variável de ambiente para GOPATH apontar para o diretório de código de origem.
set GOPATH=%USERPROFILE%\go
.Instale o go-sql-driver para mysql executando o comando
go get github.com/go-sql-driver/mysql
.Em resumo, instale o Go e execute esses comandos no prompt de comando:
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go get github.com/go-sql-driver/mysql
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 MySQL. 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, clique em Todos os recursos e pesquise o servidor que você criou (como mydemoserver).
- Clique no 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 simples, como o Bloco de Notas no Microsoft Windows, vi ou Nano no Ubuntu ou Editor de Texto no macOS. Se você preferir IDE (Ambiente de Desenvolvimento Integrado) mais avançado, experimente o Gogland da Jetbrains, o Visual Studio Code da Microsoft ou o Atom.
- Cole o código Go das seções abaixo em arquivos de texto e salve-os em sua pasta de projeto com a extensão de arquivo *.go (como caminho do Windows
%USERPROFILE%\go\src\mysqlgo\createtable.go
ou caminho do Linux~/go/src/mysqlgo/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\mysqlgo\
. No Linuxcd ~/go/src/mysqlgo/
. Alguns dos editores 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, criar tabela e inserir dados
Use o código a seguir para se conectar ao servidor, criar uma tabela e carregar os dados usando uma instrução SQL INSERT.
O código importa três pacotes: o pacote sql, o go sql driver para mysql como driver para se comunicar com o Banco de Dados do Azure para MySQL e o pacote fmt 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 MySQL 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 DDL. O código também usa o Prepare() e Exec() para executar instruções preparadas com parâmetros diferentes para inserir três linhas. A cada ocorrência, um método personalizado checkError() é usado para verificar se ocorreu um erro e pane.
Substitua as constantes host
, database
, user
e password
pelos seus próprios valores.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
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.
sqlStatement, err := db.Prepare("INSERT INTO inventory (name, quantity) VALUES (?, ?);")
res, err := sqlStatement.Exec("banana", 150)
checkError(err)
rowCount, err := res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("orange", 154)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("apple", 100)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
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 go sql driver para mysql como driver para se comunicar com o Banco de Dados do Azure para MySQL e o pacote fmt 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 MySQL 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 Query() para executar o comando select. Em seguida, ele executa Next() para iterar por meio do conjunto de resultados e Scan() para analisar os valores de coluna, salvando o valor nas variáveis. A cada ocorrência, um método personalizado checkError() é usado para verificar se ocorreu um erro e pane.
Substitua as constantes host
, database
, user
e password
pelos seus próprios valores.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Variables for printing column data when scanned.
var (
id int
name string
quantity int
)
// Read some data from the table.
rows, err := db.Query("SELECT id, name, quantity from inventory;")
checkError(err)
defer rows.Close()
fmt.Println("Reading data:")
for rows.Next() {
err := rows.Scan(&id, &name, &quantity)
checkError(err)
fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
}
err = rows.Err()
checkError(err)
fmt.Println("Done.")
}
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 go sql driver para mysql como driver para se comunicar com o Banco de Dados do Azure para MySQL e o pacote fmt 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 MySQL 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 o comando update. A cada ocorrência, um método personalizado checkError() é usado para verificar se ocorreu um erro e pane.
Substitua as constantes host
, database
, user
e password
pelos seus próprios valores.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("UPDATE inventory SET quantity = ? WHERE name = ?", 200, "banana")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Updated %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Excluir dados
Use o código a seguir para conectar-se e remover os dados usando uma instrução SQL DELETE.
O código importa três pacotes: o pacote sql, o go sql driver para mysql como driver para se comunicar com o Banco de Dados do Azure para MySQL e o pacote fmt 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 MySQL 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 o comando delete. A cada ocorrência, um método personalizado checkError() é usado para verificar se ocorreu um erro e pane.
Substitua as constantes host
, database
, user
e password
pelos seus próprios valores.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("DELETE FROM inventory WHERE name = ?", "orange")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Deleted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
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