Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве показано, как подключиться к базе данных Azure для MySQL на платформах Windows, Ubuntu Linux и Apple macOS с помощью языка Go . Здесь также показано, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных. В этом разделе предполагается, что вы знакомы с разработкой с помощью Go и что вы не знакомы с Базой данных Azure для MySQL.
Необходимые компоненты
В качестве отправной точки в этом кратком руководстве используются ресурсы, созданные в соответствии со следующими материалами:
- Краткое руководство. Создание экземпляра База данных Azure для MySQL с помощью портал Azure
- Краткое руководство. Создание экземпляра База данных Azure для MySQL — гибкий сервер с помощью Azure CLI
Внимание
Для этого краткого руководства рекомендуется использовать сервер с общедоступным доступом (разрешенными IP-адресами ). Использование сервера с закрытым доступом (интеграция виртуальной сети) для выполнения этого краткого руководства может включать дополнительные действия, которые не рассматриваются.
Убедитесь, что IP-адреса, с которых вы подключаетесь, добавлены в правила брандмауэра сервера с помощью портала Azure или Azure CLI.
Установка Go и соединителя MySQL
Установите Go и драйвер go-sql-driver для MySQL на своем компьютере. В зависимости от используемой платформы выполните действия, приведенные в соответствующем разделе.
Скачайте и установите Go для Microsoft Windows согласно инструкциям по установке.
Запустите командную строку из меню "Пуск".
Создайте папку для проекта, например
mkdir %USERPROFILE%\go\src\mysqlgo.Перейдите в папку проекта, например
cd %USERPROFILE%\go\src\mysqlgo.Задайте переменную среды для GOPATH, чтобы указать каталог исходного кода:
set GOPATH=%USERPROFILE%\goЗапустите go mod init, чтобы создать модуль в текущем каталоге. Например:
go mod init mysqlgo.- Параметр
<module_path>обычно обозначает расположение в репозитории GitHub, напримерgithub.com/<your_github_account_name>/<directory>. - Для тестовых приложений командной строки
<module_path>может не ссылаться на фактическое расположение.
- Параметр
Установите драйвер go-sql-driver для MySQL, выполнив команду
go get github.com/go-sql-driver/mysql.Установите Go, а затем выполните следующие команды в командной строке:
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go mod init mysqlgo go get github.com/go-sql-driver/mysql
Получение сведений о подключении
Получите сведения о подключении, необходимые для подключения к базе данных Azure.для MySQL. Вам потребуется полное имя сервера и учетные данные для входа.
- Войдите на портал Azure.
- В меню слева на портале Azure выберите все ресурсы и найдите созданный сервер (например , mydemoserver).
- Выберите имя сервера.
- Запишите имя сервера и имя для входа администратора сервера с панели сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой панели.
Сборка и выполнение кода Go
- Чтобы написать код Golang, можно использовать простой текстовый редактор, например Блокнот в Microsoft Windows,
viNano в Ubuntu или TextEdit в macOS. Если вы предпочитаете более богатую интерактивную среду разработки (IDE), попробуйтеGoLandJetBrains, Visual Studio Code от Корпорации Майкрософт или Atom. - Вставьте код Go в текстовые файлы, а затем сохраните их в папку проекта с расширением *.go (например, путь
%USERPROFILE%\go\src\mysqlgo\createtable.goк Windows или путь~/go/src/mysqlgo/createtable.goк Linux). - Найдите константы
host,database,userиpasswordв коде и замените приведенные для примера значения своими собственными. База данных с именем flexibleserverdb создается при создании экземпляра сервера База данных Azure для MySQL. Эту базу данных или другую можно использовать. - Запустите командную строку или оболочку Bash. Перейдите в папку проекта. В Windows это будет команда
cd %USERPROFILE%\go\src\mysqlgo\, а в Linux —cd ~/go/src/mysqlgo/. Некоторые из упомянутых редакторов IDE позволяют выполнять отладку и использовать среду выполнения без применения команд оболочки. - Скомпилируйте приложение и запустите его с помощью команды
go run createtable.go. - Вы также можете создать код в собственном приложении. Для этого введите
go build createtable.go, а затем выполнитеcreatetable.exe, чтобы запустить приложение.
Подключение, создание таблицы и вставка данных
Используйте следующий код для подключения к серверу, создания таблицы и загрузки данных с помощью инструкции SQL INSERT.
Код импортирует три пакета: пакет sql, драйвер go sql для MySQL для обмена данными с базой данных Azure для MySQL, а также пакет fmt для вывода входных и выходных данных в командной строке.
Метод sql.Open() кода вызывает подключение к Базе данных Azure для MySQL и проверяет подключение с помощью метода db.Ping().
Дескриптор базы данных используется для всех компонентов. Он содержит пул подключений к серверу базы данных. Код вызывает Exec() метод несколько раз для выполнения нескольких команд DDL. Код также использует Prepare() и Exec() для выполнения подготовленных инструкций с разными параметрами для вставки трех строк. При каждом запуске пользовательский метод checkError() проверяет наличие ошибок и инициирует аварийный выход в случае их обнаружения.
Замените значения констант host, database, user и password собственными значениями.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
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&tls=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.")
}
Чтение данных
Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных.
Код импортирует три пакета: пакет sql, драйвер go sql для MySQL для обмена данными с базой данных Azure для MySQL, а также пакет fmt для вывода входных и выходных данных в командной строке.
Код вызывает метод sql.Open(), чтобы подключиться к базе данных Azure для MySQL, а затем проверяет подключение с помощью метода db.Ping(). Дескриптор базы данных используется для всех компонентов. Он содержит пул подключений к серверу базы данных. Код вызывает метод Query() для выполнения команды SELECT. Затем он запускает метод Next(), чтобы выполнить итерацию результирующего набора, и метод Scan() для анализа значений столбца, сохраняя значения в переменных. При каждом запуске пользовательский метод checkError() проверяет наличие ошибок и инициирует аварийный выход в случае их обнаружения.
Замените значения констант host, database, user и password собственными значениями.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
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&tls=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.")
}
Обновление данных
Используйте указанный ниже код с инструкцией SQL UPDATE для подключения и обновления данных.
Код импортирует три пакета: пакет sql, драйвер go sql для MySQL для обмена данными с базой данных Azure для MySQL, а также пакет fmt для вывода входных и выходных данных в командной строке.
Код вызывает метод sql.Open(), чтобы подключиться к базе данных Azure для MySQL, а затем проверяет подключение с помощью метода db.Ping(). Дескриптор базы данных используется для всех компонентов. Он содержит пул подключений к серверу базы данных. Код вызывает метод Exec() для выполнения команды UPDATE. При каждом запуске пользовательский метод checkError() проверяет наличие ошибок и инициирует аварийный выход в случае их обнаружения.
Замените значения констант host, database, user и password собственными значениями.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
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&tls=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.")
}
Удаление данных
Используйте указанный ниже код с инструкцией SQL DELETE для подключения и удаления данных.
Код импортирует три пакета: пакет sql, драйвер go sql для MySQL для обмена данными с базой данных Azure для MySQL, а также пакет fmt для вывода входных и выходных данных в командной строке.
Код вызывает метод sql.Open(), чтобы подключиться к базе данных Azure для MySQL, а затем проверяет подключение с помощью метода db.Ping(). Дескриптор базы данных используется для всех компонентов. Он содержит пул подключений к серверу базы данных. Код вызывает метод Exec() для выполнения команды DELETE. При каждом запуске пользовательский метод checkError() проверяет наличие ошибок и инициирует аварийный выход в случае их обнаружения.
Замените значения констант host, database, user и password собственными значениями.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "flexibleserverdb"
user = "myadmin"
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&tls=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.")
}
Очистка ресурсов
Чтобы очистить все ресурсы, используемые во время этого краткого руководства, удалите группу ресурсов с помощью следующей команды:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes