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:

Ö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

  1. Yükleme yönergelerine uygun olarak Microsoft Windows için Go’yu indirin ve yükleyin.

  2. Başlat menüsünden komut istemini başlatın.

  3. Projeniz için şöyle bir klasör oluşturun. mkdir %USERPROFILE%\go\src\mysqlgo.

  4. Dizini değiştirerek proje klasörünüze geçin; örneğin, cd %USERPROFILE%\go\src\mysqlgo.

  5. GOPATH için ortam değişkenini kaynak kod dizinine işaret edecek şekilde ayarlayın. set GOPATH=%USERPROFILE%\go.

  6. 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
    

Linux (Ubuntu)

  1. Bash kabuğunu başlatın.

  2. sudo apt-get install golang-go komutunu çalıştırarak Go'yu yükleyin.

  3. Giriş dizininizde projeniz için mkdir -p ~/go/src/mysqlgo/ gibi bir klasör oluşturun.

  4. Dizini değiştirerek klasöre geçin; örneğin, cd ~/go/src/mysqlgo/.

  5. 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=~/go komutunu çalıştırarak geçerli kabuk oturumu için GOPATH olarak go dizinini ayarlayın.

  6. go get github.com/go-sql-driver/mysql komutunu ç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

  1. Platformunuza uygun yükleme yönergelerine göre Go’yu indirip yükleyin.

  2. Bash kabuğunu başlatın.

  3. Giriş dizininizde projeniz için mkdir -p ~/go/src/mysqlgo/ gibi bir klasör oluşturun.

  4. Dizini değiştirerek klasöre geçin; örneğin, cd ~/go/src/mysqlgo/.

  5. 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=~/go komutunu çalıştırarak geçerli kabuk oturumu için GOPATH olarak go dizinini ayarlayın.

  6. 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 ş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.

  1. Azure Portaloturum açın.
  2. Azure portalında sol taraftaki menüden Tüm kaynaklar'a tıklayın ve oluşturduğunuz sunucuyu (örneğin, mydemoserver) arayın.
  3. Sunucunun adına tıklayın.
  4. 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. MySQL için Azure Veritabanı sunucu adı

Go kodunu derleme ve çalıştırma

  1. 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.
  2. 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.go yolu veya Linux'ta ~/go/src/mysqlgo/createtable.go yolu.
  3. Kodda HOST, DATABASE, USER ve PASSWORD sabitlerini bulun ve daha sonra örnek değerleri kendi değerlerinizle değiştirin.
  4. 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'ta cd ~/go/src/mysqlgo/. Belirtilen IDE düzenleyicilerinden bazıları kabuk komutları gerektirmeden hata ayıklama ve çalışma zamanı özellikleri sunar.
  5. Uygulamayı derlemek ve çalıştırmak için go run createtable.go komutunu yazarak kodu çalıştırın.
  6. Alternatif olarak, kodu yerel bir uygulamada derlemek için go build createtable.go komutunu kullanın, ardından uygulamayı çalıştırmak için createtable.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

Sonraki adımlar