Hızlı başlangıç: MySQL için Azure veritabanı 'na bağlanmak ve veri sorgulamak için go dilini kullanma
AŞAĞıDAKILER IÇIN GEÇERLIDIR:
MySQL için Azure Veritabanı - Tek Sunucu
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. Ayrıca veritabanında veri sorgulamak, eklemek, güncelleştirmek ve silmek için SQL deyimlerini nasıl kullanacağınız 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 aracını kullanarak MySQL için Azure Veritabanı sunucusu oluşturma
Önemli
Bağlanmakta olduğunuz IP adresinin Azure Portal veya Azure CLI kullanarak sunucunun güvenlik duvarı kurallarını 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:
Windows
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/mysqlkomutunu ç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
Linux (Ubuntu)
Bash kabuğunu başlatın.
sudo apt-get install golang-gokomutunu çalıştırarak Go'yu yükleyin.Giriş dizininizde projeniz için
mkdir -p ~/go/src/mysqlgo/gibi bir klasör oluşturun.Dizini değiştirerek klasöre geçin; örneğin,
cd ~/go/src/mysqlgo/.GOPATH ortam değişkenini geçerli bir kaynak dizine, örneğin geçerli giriş dizininizin go klasörüne işaret edecek şekilde ayarlayın. Bash kabuğunda
export GOPATH=~/gokomutunu çalıştırarak geçerli kabuk oturumu için GOPATH olarak go dizinini ayarlayın.go get github.com/go-sql-driver/mysqlkomutunu çalıştırarak go-sql-driver for mysql'i yükleyin.Özetle şu bash komutlarını çalıştırın:
sudo apt-get install golang-go mkdir -p ~/go/src/mysqlgo/ cd ~/go/src/mysqlgo/ export GOPATH=~/go/ go get github.com/go-sql-driver/mysql
Apple macOS
Platformunuza uygun yükleme yönergelerine göre Go’yu indirip yükleyin.
Bash kabuğunu başlatın.
Giriş dizininizde projeniz için
mkdir -p ~/go/src/mysqlgo/gibi bir klasör oluşturun.Dizini değiştirerek klasöre geçin; örneğin,
cd ~/go/src/mysqlgo/.GOPATH ortam değişkenini geçerli bir kaynak dizine, örneğin geçerli giriş dizininizin go klasörüne işaret edecek şekilde ayarlayın. Bash kabuğunda
export GOPATH=~/gokomutunu çalıştırarak geçerli kabuk oturumu için GOPATH olarak go dizinini ayarlayın.go get github.com/go-sql-driver/mysqlkomutunu çalıştırarak go-sql-driver for mysql'i yükleyin.Özetle, Go’yu yükleyin ve ardından şu bash komutlarını çalıştırın:
mkdir -p ~/go/src/mysqlgo/ cd ~/go/src/mysqlgo/ export GOPATH=~/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 Portaloturum 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ümde bulunan Go kodunu metin dosyalarına yapıştırın ve *.go dosya uzantısıyla proje klasörünüze kaydedin; örneğin, Windows'da
%USERPROFILE%\go\src\mysqlgo\createtable.goyolu veya Linux'ta~/go/src/mysqlgo/createtable.goyolu. - Kodda
HOST,DATABASE,USERvePASSWORDsabitlerini 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.gokomutunu yazarak kodu çalıştırın. - Alternatif olarak, kodu yerel bir uygulamada derlemek için
go build createtable.gokomutunu 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.")
}
Verileri 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