Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Hızlı Başlangıç: Azure portalıyla MySQL için Azure Veritabanı örneği oluşturma
- Hızlı Başlangıç: Azure CLI kullanarak MySQL için Azure Veritabanı - Esnek Sunucu örneği oluşturma
Önemli
Bu hızlı başlangıç için Genel erişim (izin verilen IP adresleri) etkinleştirilmiş bir sunucu kullanmanızı öneririz. Bu hızlı başlangıcı tamamlamak için Özel erişim (VNet Tümleştirmesi) etkinleştirilmiş bir sunucu kullanmak, ele alınmayacak ek adımlar içerebilir.
Bağlandığınız IP adresinin, Azure portalını kullanarak MySQL için Azure Veritabanı için güvenlik duvarı kurallarını yönetme - Esnek Sunucu veya Azure CLI kullanarak MySQL için Azure Veritabanı için Esnek Sunucu güvenlik duvarı kurallarını yönetme kullanılarak sunucunun güvenlik duvarı kurallarını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:
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
mkdir %USERPROFILE%\go\src\mysqlgo
gibi bir klasör oluşturun.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 etmek üzere ayarlayın:
set GOPATH=%USERPROFILE%\go
.Geçerli dizinde bir modül oluşturmak için go mod init komutunu çalıştırın. Örneğin:
go mod init mysqlgo
.<module_path>
parametresi genellikle GitHub deposundaki bir konumdur; örneğingithub.com/<your_github_account_name>/<directory>
.- Test olarak bir komut satırı uygulaması oluştururken ve uygulamayı yayımlamazsanız, öğesinin
<module_path>
gerçek bir konuma başvurması gerekmez. Örneğin,mysqlgo
.
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 mod init mysqlgo 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'ı seçin ve oluşturduğunuz sunucuyu (mydemoserver gibi) arayın.
- Sunucu adını seçin.
- 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. MySQL için Azure Veritabanı sunucu örneğinizi oluşturduğunuzda flexibleserverdb adlı bir veritabanı oluşturulur. Bu veritabanını veya oluşturduğunuz başka bir veritabanını kullanabilirsiniz. - 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 = "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.")
}
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 = "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.")
}
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 = "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.")
}
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 = "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.")
}
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