Rumah  >  Artikel  >  pangkalan data  >  Gunakan MySQL dalam bahasa Go untuk melaksanakan pemprosesan data bukan perhubungan

Gunakan MySQL dalam bahasa Go untuk melaksanakan pemprosesan data bukan perhubungan

WBOY
WBOYasal
2023-06-17 20:08:451112semak imbas

Dengan perkembangan pesat Internet, pangkalan data bukan perhubungan (NoSQL) semakin digunakan secara meluas, dan dalam bahasa Go, terdapat juga beberapa cara bukan perkaitan memproses data. Walau bagaimanapun, untuk beberapa pangkalan data hubungan tradisional, seperti MySQL, kami juga boleh menggunakan beberapa teknik untuk melaksanakan fungsi pemprosesan data bukan hubungan.

Artikel ini akan memperkenalkan kaedah dan teknik menggunakan MySQL untuk melaksanakan pemprosesan data bukan perkaitan dalam bahasa Go, termasuk cara mencipta dan mereka bentuk jadual bukan perkaitan, dan menunjukkan cara membaca data melalui contoh , menulis dan mengemas kini. Dalam proses ini, kami akan menggunakan salah satu perpustakaan ini: github.com/go-sql-driver/mysql.

1. Cipta jadual bukan hubungan

Untuk pangkalan data MySQL, kami biasanya menganggapnya sebagai pangkalan data hubungan, jadi kami perlu mereka bentuk jadual dan mengekalkan hubungan antara jadual . Tetapi kadangkala, kita perlu menyimpan data dalam struktur bukan perhubungan, seperti data format JSON.

Dalam MySQL, kami boleh menggunakan medan jenis JSON untuk melaksanakan storan bukan perhubungan. Sebagai contoh, kami mencipta jadual untuk menyimpan maklumat pengguna, yang mengandungi medan jenis JSON "maklumat" untuk menyimpan maklumat peribadi pengguna:

CREATE TABLE users (
   id INT(11) NOT NULL AUTO_INCREMENT,
   name VARCHAR(50) NOT NULL,
   info JSON NOT NULL,
   PRIMARY KEY (id)
);

Dalam kod di atas, kami mencipta jadual bernama jadual "pengguna", yang mengandungi tiga medan: id, nama dan maklumat. Jenis medan maklumat ialah JSON, yang digunakan untuk menyimpan maklumat peribadi pengguna. Dalam aplikasi praktikal, kami juga boleh menggunakan jenis bukan hubungan lain, seperti BLOB, TEXT, dll.

2. Gunakan bahasa Go untuk menyambung ke pangkalan data MySQL

Menyambung ke pangkalan data MySQL dalam bahasa Go memerlukan penggunaan perpustakaan pihak ketiga, yang paling biasa digunakan ialah github.com/ go-sql-driver/mysql. Mula-mula, anda perlu memasang perpustakaan ini, yang boleh dipasang melalui arahan berikut:

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

Pustaka ini menyediakan jenis sql.DB yang boleh digunakan untuk sambungan dan operasi pangkalan data. Sebelum menyambung ke pangkalan data, kami perlu menyediakan beberapa maklumat konfigurasi, seperti berikut:

dsn := "root:password@(127.0.0.1:3306)/database_name?charset=utf8mb4&parseTime=True&loc=Local"
db, err := sql.Open("mysql", dsn)
if err != nil {
   panic(err)
}
defer db.Close()

dsn ialah nama sumber data yang digunakan untuk menyambung ke pangkalan data. Ini termasuk nama pengguna, kata laluan, alamat hos, nombor port, nama pangkalan data, kaedah pengekodan dan maklumat lain. Dalam kod di atas, kami menggunakan alamat hos tempatan dan nombor port 3306 lalai, dan menggantikan nama pengguna dan kata laluan dengan nilai yang sepadan. Jika sambungan berjaya, pembolehubah db akan mengandungi rujukan kepada pangkalan data MySQL yang telah anda sambungkan.

3. Bahasa Go untuk membaca dan menulis data bukan hubungan

Selepas menyambung ke pangkalan data MySQL, kami boleh menggunakan jenis sql.DB untuk melaksanakan pertanyaan SQL dan mendapatkan data berkaitan. Untuk data bukan perhubungan, kita boleh menggunakan fungsi JSON MySQL untuk membaca dan menulis medan jenis JSON.

  1. Tulis data bukan hubungan

Kod berikut menunjukkan cara menulis maklumat pengguna baharu pada jadual pengguna:

info := `{
   "age": 23,
   "gender": "male",
   "email": "john@example.com"
}`
result, err := db.Exec("INSERT INTO users(name, info) VALUES(?, ?)", "John", info)
if err != nil {
   panic(err)
}
fmt.Printf("New user id: %d
", result.LastInsertId())

Dalam contoh ini, kami mula-mula menentukan rentetan JSON yang mengandungi maklumat pengguna. Kami kemudian menggunakan fungsi Exec untuk melaksanakan penyata sisipan dan menghantar maklumat pengguna sebagai parameter ke dalam pernyataan SQL. Selepas pemasukan berjaya, kami memperoleh dan mengeluarkan ID pengguna baharu.

  1. Membaca data bukan perkaitan

Seterusnya, kami akan menunjukkan cara membaca data JSON yang disimpan dalam medan bukan perhubungan. Anda hanya boleh mendapatkan pasangan nilai kunci dalam JSON menggunakan fungsi JSON_EXTRACT MySQL. Kod berikut menunjukkan cara membaca semua maklumat pengguna dalam jadual pengguna:

rows, err := db.Query("SELECT * FROM users")
if err != nil {
   panic(err)
}
defer rows.Close()

for rows.Next() {
   var id int
   var name string
   var info []byte
   err := rows.Scan(&id, &name, &info)
   if err != nil {
      panic(err)
   }
   var user map[string]interface{}
   err = json.Unmarshal(info, &user)
   if err != nil {
      panic(err)
   }
   fmt.Printf("ID: %d, Name: %s, Age: %f, Gender: %s, Email: %s
", id, name, user["age"], user["gender"], user["email"])
}

Dalam contoh ini, kami mula-mula menggunakan fungsi db.Query untuk menanyakan semua data dalam jadual pengguna. Kemudian, kami menggunakan fungsi rows.Scan untuk membaca medan ID, nama dan maklumat bagi setiap baris data. Seterusnya, kami menukar nilai medan maklumat kepada pembolehubah pengguna jenis peta[rentetan]antara muka{} dan menggunakan fungsi json.Unmarshal untuk menghurai. Akhir sekali, kami mengeluarkan ID, Nama, Umur, Jantina dan E-mel setiap pengguna.

  1. Mengemas kini data bukan hubungan

Akhir sekali, kami menunjukkan cara mengemas kini data yang disimpan dalam medan bukan hubungan. Fungsi JSON_SET MySQL boleh digunakan untuk mengemas kini pasangan nilai kunci secara dinamik dalam medan JSON. Kod berikut menunjukkan cara mengemas kini alamat e-mel pengguna kepada nilai baharu:

result, err := db.Exec("UPDATE users SET info=JSON_SET(info, '$.email', ?) WHERE name=?", "john_doe@example.com", "John")
if err != nil {
   panic(err)
}
rowsAffected, err := result.RowsAffected()
if err != nil {
   panic(err)
}
fmt.Printf("Rows affected: %d
", rowsAffected)

Dalam contoh ini, kami menggunakan fungsi Exec untuk melaksanakan kenyataan kemas kini dan menghantar alamat e-mel baharu sebagai parameter kepada pernyataan SQL Fungsi JSON_SET. Kami menggunakan klausa WHERE untuk menentukan nama pengguna untuk dikemas kini. Selepas kemas kini berjaya, kami menyemak dan mengeluarkan bilangan baris yang terjejas.

4. Ringkasan

Dalam bahasa Go, kita boleh menggunakan pangkalan data MySQL untuk menyimpan data bukan perhubungan. Dengan menggunakan medan jenis JSON, kami boleh menyimpan dan memproses data dengan mudah dalam format JSON. Artikel ini memperkenalkan kaedah dan teknik untuk mencipta jadual bukan hubungan, menyambung ke pangkalan data MySQL, membaca dan menulis data bukan hubungan dan contoh penggunaan fungsi JSON_EXTRACT dan JSON_SET untuk operasi data. Mereka boleh membantu anda menggunakan MySQL dengan lebih baik untuk memproses data bukan hubungan dalam aplikasi praktikal.

Atas ialah kandungan terperinci Gunakan MySQL dalam bahasa Go untuk melaksanakan pemprosesan data bukan perhubungan. 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