Hızlı Başlangıç: MySQL için Azure Veritabanı'da verileri bağlamak ve sorgulamak için Go dilini kullanma
ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu
Önemli
MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?
Bu hızlı başlangıçta, Windows, Ubuntu Linux ve Apple macOS platformlarından Go dilinde yazılmış kod kullanarak MySQL için Azure Veritabanı’na nasıl bağlanılacağı gösterilmiştir. Hızlı başlangıçta, veritabanında verileri sorgulamak, eklemek, güncelleştirmek ve silmek için SQL deyimlerinin nasıl kullanılacağı da gösterilmiştir. Bu konuda, Go kullanarak geliştirmeyle ilgili bilgi sahibi olduğunuz ve MySQL için Azure Veritabanı ile çalışmaya yeni başladığınız varsayılır.
Önkoşullar
Bu hızlı başlangıçta, başlangıç noktası olarak şu kılavuzlardan birinde oluşturulan kaynaklar kullanılmaktadır:
- Azure portalını kullanarak MySQL için Azure Veritabanı sunucusu oluşturma
- Azure CLI kullanarak MySQL için Azure Veritabanı sunucusu oluşturma
Önemli
Bağlandığınız IP adresinin Azure portalı veya Azure CLI kullanılarak sunucunun güvenlik duvarı kurallarına eklendiğinden emin olun
Go ve MySQL bağlayıcısını yükleme
Bilgisayarınıza Go ve go-sql-driver for MySQL'i yükleyin. Platformunuza bağlı olarak, uygun bölümdeki adımları izleyin:
Yükleme yönergelerine uygun olarak Microsoft Windows için Go’yu indirin ve yükleyin.
Başlat menüsünden komut istemini başlatın.
Projeniz için şöyle bir klasör oluşturun.
mkdir %USERPROFILE%\go\src\mysqlgo
.Dizini değiştirerek proje klasörünüze geçin; örneğin,
cd %USERPROFILE%\go\src\mysqlgo
.GOPATH için ortam değişkenini kaynak kod dizinine işaret edecek şekilde ayarlayın.
set GOPATH=%USERPROFILE%\go
.go get github.com/go-sql-driver/mysql
komutunu çalıştırarak go-sql-driver for mysql'i yükleyin.Özetle, Go’yu yükleyin ve ardından komut isteminde şu komutları çalıştırın:
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go get github.com/go-sql-driver/mysql
Bağlantı bilgilerini alma
MySQL için Azure Veritabanı'na bağlanmak üzere gereken bağlantı bilgilerini alın. Tam sunucu adına ve oturum açma kimlik bilgilerine ihtiyacınız vardır.
- Azure Portal’da oturum açın.
- Azure portalında sol taraftaki menüden Tüm kaynaklar'a tıklayın ve oluşturduğunuz sunucuyu (örneğin, mydemoserver) arayın.
- Sunucunun adına tıklayın.
- Sunucunun Genel Bakış panelinden Sunucu adı ile Sunucu yöneticisi oturum açma adı’nı not alın. Parolanızı unutursanız, bu panelden parolayı da sıfırlayabilirsiniz.
Go kodunu derleme ve çalıştırma
- Golang kodlarını yazmak için Microsoft Windows’da Not Defteri , Ubuntu’da VI veya Nano, macOS’da TextEdit gibi basit metin düzenleyicilerini kullanabilirsiniz. Daha zengin bir Tümleşik Geliştirme Ortamı (IDE) tercih ediyorsanız Jetbrains Gogland, Microsoft Visual Studio Code veya Atom kullanmayı deneyebilirsiniz.
- Aşağıdaki bölümlerden Go kodunu metin dosyalarına yapıştırın ve ardından *.go dosya uzantısıyla proje klasörünüzde kaydedin (Windows yolu veya Linux yolu
%USERPROFILE%\go\src\mysqlgo\createtable.go
~/go/src/mysqlgo/createtable.go
gibi). - Kodda
HOST
,DATABASE
,USER
vePASSWORD
sabitlerini bulun ve daha sonra örnek değerleri kendi değerlerinizle değiştirin. - Komut istemini veya Bash kabuğunu başlatın. Dizini değiştirerek proje klasörünüze geçin. Örneğin; Windows’da
cd %USERPROFILE%\go\src\mysqlgo\
. Linux'tacd ~/go/src/mysqlgo/
. Belirtilen IDE düzenleyicilerinden bazıları kabuk komutları gerektirmeden hata ayıklama ve çalışma zamanı özellikleri sunar. - Uygulamayı derlemek ve çalıştırmak için
go run createtable.go
komutunu yazarak kodu çalıştırın. - Alternatif olarak, kodu yerel bir uygulamada derlemek için
go build createtable.go
komutunu kullanın, ardından uygulamayı çalıştırmak içincreatetable.exe
’yi başlatın.
Bağlanma, tablo oluşturma ve veri ekleme
Sunucuya bağlanmak, tablo oluşturmak ve INSERT SQL deyimini kullanarak verileri yüklemek için aşağıdaki kodu kullanın.
Kod üç paketi içeri aktarır: sql paketi, MySQL için Azure Veritabanı'yla iletişim kuran sürücü olarak go sql driver for mysql ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.
Kod, sql.Open() yöntemini çağırarak MySQL için Azure Veritabanı’na bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, birkaç DDL komutunu çalıştırmak için birkaç kez Exec() yöntemini çağırır. Kod ayrıca, hazırlanmış deyimleri farklı parametrelerle çalıştırıp üç satır eklemek için Prepare() ve Exec() kullanır. Her seferinde hata oluşup olmadığını denetlemek ve acil çıkış yapmak için özel bir checkError() yöntemi kullanılır.
host
, database
, user
ve password
sabitlerini kendi değerlerinizle değiştirin.
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.")
}
Verileri okuma
Bağlanmak ve SELECT SQL deyimi kullanarak verileri okumak için aşağıdaki kodu kullanın.
Kod üç paketi içeri aktarır: sql paketi, MySQL için Azure Veritabanı'yla iletişim kuran sürücü olarak go sql driver for mysql ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.
Kod, sql.Open() yöntemini çağırarak MySQL için Azure Veritabanı’na bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, seçme komutunu çalıştırmak için Query() yöntemini çağırır. Ardından, sonuç kümesi üzerinden yineleme yapmak için Next() ve sütun değerlerini ayrıştırıp değeri değişkenlere kaydetmek için Scan() çalıştırır. Her seferinde hata oluşup olmadığını denetlemek ve acil çıkış yapmak için özel bir checkError() yöntemi kullanılır.
host
, database
, user
ve password
sabitlerini kendi değerlerinizle değiştirin.
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.")
}
Verileri güncelleştirme
UPDATE SQL deyimini kullanarak bağlanmak ve verileri güncelleştirmek için aşağıdaki kodu kullanın.
Kod üç paketi içeri aktarır: sql paketi, MySQL için Azure Veritabanı'yla iletişim kuran sürücü olarak go sql driver for mysql ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.
Kod, sql.Open() yöntemini çağırarak MySQL için Azure Veritabanı’na bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, güncelleştirme komutunu çalıştırmak için Exec() yöntemini çağırır. Her seferinde hata oluşup olmadığını denetlemek ve acil çıkış yapmak için özel bir checkError() yöntemi kullanılır.
host
, database
, user
ve password
sabitlerini kendi değerlerinizle değiştirin.
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.")
}
Veri silme
Bağlanmak ve DELETE SQL deyimini kullanarak verileri kaldırmak için aşağıdaki kodu kullanın.
Kod üç paketi içeri aktarır: sql paketi, MySQL için Azure Veritabanı'yla iletişim kuran sürücü olarak go sql driver for mysql ve komut satırında yazdırılan girdi ve çıktı için fmt paketi.
Kod, sql.Open() yöntemini çağırarak MySQL için Azure Veritabanı’na bağlanır ve db.Ping() yöntemini kullanarak bağlantıyı kontrol eder. İşlem boyunca, veritabanı sunucusu için bağlantı havuzunu tutan bir veritabanı tanıtıcı kullanılır. Kod, silme komutunu çalıştırmak için Exec() yöntemini çağırır. Her seferinde hata oluşup olmadığını denetlemek ve acil çıkış yapmak için özel bir checkError() yöntemi kullanılır.
host
, database
, user
ve password
sabitlerini kendi değerlerinizle değiştirin.
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.")
}
Kaynakları temizleme
Bu hızlı başlangıç sırasında kullanılan tüm kaynakları temizlemek için aşağıdaki komutu kullanarak kaynak grubunu silin:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes