Rumah  >  Artikel  >  pangkalan data  >  Menggunakan MySQL untuk mengurus metadata dalam bahasa Go

Menggunakan MySQL untuk mengurus metadata dalam bahasa Go

PHPz
PHPzasal
2023-06-17 14:11:341579semak imbas

Dengan kemunculan era data besar, pengurusan data menjadi semakin penting. Apabila melakukan pemprosesan data, pengurusan metadata adalah bahagian penting. Metadata ialah data yang menerangkan data dan digunakan terutamanya untuk pengurusan data, penyelenggaraan dan pertanyaan. Sebagai sistem pangkalan data hubungan sumber terbuka, MySQL mempunyai pelbagai senario aplikasi Dalam bahasa Go, ia juga sangat mudah untuk menggunakan MySQL untuk mengurus metadata.

Artikel ini akan memperkenalkan cara menggunakan MySQL dalam bahasa Go untuk melaksanakan pengurusan metadata.

1. Pasang pemacu MySQL

Apabila menggunakan MySQL, kita perlu memasang pemacu Go yang sepadan Pada masa ini, pemacu MySQL yang lebih biasa digunakan dalam bahasa Go ialah go-sql-driver/mysql dan mysql-connector-go. Dalam artikel ini kami akan menggunakan go-sql-driver/mysql sebagai pemacu MySQL.

Kaedah pemasangan adalah seperti berikut:

go get github.com/go-sql-driver/mysql

2 Sambung ke pangkalan data MySQL

Anda perlu menggunakan pakej database/sql dan go-sql-driver/mysql untuk menyambung ke pangkalan data MySQL. pangkalan data MySQL. Berikut ialah contoh penyambungan ke pangkalan data MySQL:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "用户名:密码@tcp(地址:端口)/数据库名")
    if err != nil {
        // 错误处理
    }
    defer db.Close()
}

Dalam contoh di atas, kami menggunakan kaedah sql.Open() untuk menyambung ke pangkalan data MySQL, dengan mysql ialah nama pemacu MySQL. Kita perlu menentukan nama pengguna, kata laluan, alamat, port dan nama pangkalan data untuk menyambung ke pangkalan data. Objek sql.Open() yang dikembalikan oleh kaedah db boleh digunakan untuk operasi seterusnya.

3. Cipta jadual

Dalam MySQL, kita boleh menggunakan pernyataan CREATE TABLE untuk mencipta jadual. Berikut ialah contoh mencipta jadual metadata:

func createMetadataTable(db *sql.DB) error {
    _, err := db.Exec(`CREATE TABLE IF NOT EXISTS metadata (
        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
        type VARCHAR(20) NOT NULL,
        size INT NOT NULL,
        create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`)
    if err != nil {
        return err
    }
    return nil
}

Dalam kod di atas, kami menggunakan pernyataan CREATE TABLE untuk mencipta jadual bernama metadata. Jadual mengandungi 5 medan: id, nama, jenis, saiz, create_time dan update_time. Antaranya, id ialah medan autokenaikan, name mewakili nama, type mewakili jenis, size mewakili saiz, create_time mewakili masa penciptaan dan update_time mewakili masa kemas kini . Enjin jadual ialah InnoDB dan set aksara ialah utf8mb4.

4. Masukkan data

Anda boleh menggunakan kaedah db.Exec() untuk memasukkan data baharu dalam jadual metadata. Berikut ialah contoh memasukkan data ke dalam jadual metadata:

func insertMetadata(db *sql.DB, name string, type string, size int) error {
    _, err := db.Exec(`INSERT INTO metadata (name, type, size) VALUES (?, ?, ?)`, name, type, size)
    if err != nil {
        return err
    }
    return nil
}

Dalam kod di atas, kami menggunakan kaedah db.Exec() untuk memasukkan sekeping data ke dalam jadual metadata. Gunakan ? untuk mewakili ruang letak dan name, type dan size akan menggantikan ? secara bergilir-gilir.

5. Data pertanyaan

Anda boleh menggunakan kaedah db.Query() dan db.QueryRow() untuk bertanya data daripada jadual metadata. Berikut ialah contoh pertanyaan data daripada jadual metadata:

func selectMetadata(db *sql.DB, id int) (*Metadata, error) {
    var metadata Metadata
    err := db.QueryRow(`SELECT * FROM metadata WHERE id=?`, id).Scan(&metadata.id, &metadata.name, &metadata.typ, &metadata.size, &metadata.createTime, &metadata.updateTime)
    if err != nil {
        if err == sql.ErrNoRows {
            return nil, nil
        }
        return nil, err
    }
    return &metadata, nil
}

Dalam kod di atas, kami menggunakan kaedah db.QueryRow() untuk menanyakan sekeping data daripada jadual metadata. Gunakan kaedah Scan() untuk memetakan hasil pertanyaan ke dalam struktur.

6. Kemas kini data

Anda boleh menggunakan kaedah db.Exec() untuk mengemas kini data dalam jadual metadata. Berikut ialah contoh mengemas kini data:

func updateMetadata(db *sql.DB, id int, name string, typ string, size int) error {
    _, err := db.Exec(`UPDATE metadata SET name=?, type=?, size=? WHERE id=?`, name, typ, size, id)
    if err != nil {
        return err
    }
    return nil
}

Dalam kod di atas, kami menggunakan kaedah db.Exec() untuk mengemas kini sekeping data dalam jadual metadata.

7. Padam data

Anda boleh menggunakan kaedah db.Exec() untuk memadam data daripada jadual metadata. Berikut ialah contoh pemadaman data:

func deleteMetadata(db *sql.DB, id int) error {
    _, err := db.Exec(`DELETE FROM metadata WHERE id=?`, id)
    if err != nil {
        return err
    }
    return nil
}

Dalam kod di atas, kami menggunakan kaedah db.Exec() untuk memadamkan sekeping data dalam jadual metadata.

Ringkasan

Artikel ini memperkenalkan cara menggunakan MySQL dalam bahasa Go untuk melaksanakan pengurusan metadata. Kami menggunakan pakej database/sql dan pemacu go-sql-driver/mysql untuk menyambung ke pangkalan data MySQL dan menggunakan pernyataan SQL untuk mencipta jadual metadata, memasukkan, bertanya, mengemas kini dan memadam data. Kaedah ini boleh digunakan dalam pelbagai senario pengurusan data untuk menjadikan pengurusan data lebih mudah dan cekap.

Atas ialah kandungan terperinci Menggunakan MySQL untuk mengurus metadata dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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