Interaksi antara fungsi Golang dan pangkalan data teragih dalam sistem teragih

王林
Lepaskan: 2024-04-19 15:06:01
asal
676 orang telah melayarinya

Dalam sistem teragih, fungsi Go boleh berinteraksi dengan pangkalan data teragih. Langkah-langkah khusus adalah seperti berikut: Pasang kebergantungan yang diperlukan. Gunakan fungsi spanner.NewClient untuk menyambung ke pangkalan data. Gunakan kaedah Pertanyaan untuk melaksanakan pertanyaan dan dapatkan iterator. Gunakan kaedah Do untuk mengulangi hasil pertanyaan dan memproses data. Selepas pertanyaan selesai, gunakan kaedah Tutup untuk menutup sambungan.

分布式系统中 Golang 函数与分布式数据库的交互

Interaksi antara fungsi Go dan pangkalan data teragih dalam sistem teragih

Dalam sistem teragih, adalah keperluan biasa untuk fungsi Go berinteraksi dengan pangkalan data teragih. Artikel ini membimbing anda menggunakan kod Go untuk menyambung ke dan menanyakan pangkalan data yang diedarkan.

Pasang dependencies

Langkah pertama ialah memasang dependencies yang diperlukan:

import (
    "context"
    "fmt"
    "log"

    "cloud.google.com/go/spanner"
)
Salin selepas log masuk

Sambung ke pangkalan data

Untuk menyambung ke pangkalan data, gunakan fungsi spanner.NewClient: spanner.NewClient 函数:

client, err := spanner.NewClient(context.Background(), "projects/my-project", "instances/my-instance", "databases/my-database")
if err != nil {
    log.Fatal(err)
}
Salin selepas log masuk

执行查询

要执行查询,请使用 Query 方法:

stmt := spanner.Statement{SQL: `SELECT * FROM Singers`}
iter := client.Single().Query(context.Background(), stmt)
defer iter.Stop()
Salin selepas log masuk

iter 是一个迭代器,它将遍历查询结果。

处理结果

要处理结果,请使用 Dorreee

Laksanakan query

Untuk melaksanakan pertanyaan, gunakan kaedah Query:

for {
    row, err := iter.Next()
    if err == iterator.Done {
        break
    }
    if err != nil {
        log.Fatal(err)
    }
    var singerId int64
    var firstName string
    var lastName string
    if err := row.ColumnByName("SingerId", &singerId); err != nil {
        log.Fatal(err)
    }
    if err := row.ColumnByName("FirstName", &firstName); err != nil {
        log.Fatal(err)
    }
    if err := row.ColumnByName("LastName", &lastName); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%d %s %s\n", singerId, firstName, lastName)
}
Salin selepas log masuk

iter ialah iterator yang akan berulang pada hasil pertanyaan.

Memproses keputusan

Untuk memproses keputusan, sila gunakan kaedah Do: 🎜
client.Close()
Salin selepas log masuk
🎜Tutup sambungan🎜🎜Selepas pertanyaan selesai, sila tutup sambungan ke pangkalan data: 🎜
package main

import (
    "context"
    "fmt"
    "log"

    "cloud.google.com/go/spanner"
)

func main() {
    client, err := spanner.NewClient(context.Background(), "projects/my-project", "instances/my-instance", "databases/my-database")
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    stmt := spanner.Statement{SQL: `SELECT * FROM Singers`}
    iter := client.Single().Query(context.Background(), stmt)
    defer iter.Stop()

    for {
        row, err := iter.Next()
        if err == iterator.Done {
            break
        }
        if err != nil {
            log.Fatal(err)
        }
        var singerId int64
        var firstName string
        var lastName string
        if err := row.ColumnByName("SingerId", &singerId); err != nil {
            log.Fatal(err)
        }
        if err := row.ColumnByName("FirstName", &firstName); err != nil {
            log.Fatal(err)
        }
        if err := row.ColumnByName("LastName", &lastName); err != nil {
            log.Fatal(err)
        }
        fmt.Printf("%d %s %s\n", singerId, firstName, lastName)
    }
}
Salin selepas log masuk
🎜Kes sebenar 🎜🎜Berikut ialah satu contoh kod Complete Go yang menunjukkan cara menyambung ke pangkalan data Cloud Spanner dan melaksanakan pertanyaan: 🎜rrreee

Atas ialah kandungan terperinci Interaksi antara fungsi Golang dan pangkalan data teragih dalam sistem teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan