ホームページ > データベース > mysql チュートリアル > Go 言語で MySQL を使用して非リレーショナル データ処理を実装する

Go 言語で MySQL を使用して非リレーショナル データ処理を実装する

WBOY
リリース: 2023-06-17 20:08:45
オリジナル
1158 人が閲覧しました

インターネットの急速な発展に伴い、非リレーショナル データベース (NoSQL) がますます広く使用されるようになりました。Go 言語には、データを処理する非リレーショナルな方法もいくつかあります。ただし、MySQL などの一部の従来のリレーショナル データベースでは、いくつかの手法を使用して非リレーショナル データ処理関数を実装することもできます。

この記事では、MySQL を使用して Go 言語で非リレーショナル データ処理を実装する方法とテクニック (非リレーショナル テーブルの作成および設計方法を含む) を紹介し、例を通じてデータの読み取り方法を示します。書いて更新します。このプロセスでは、github.com/go-sql-driver/mysql ライブラリのいずれかを使用します。

1. 非リレーショナル テーブルの作成

MySQL データベースの場合、通常はリレーショナル データベースとして考えるため、テーブルを設計し、テーブル間の関係を維持する必要があります。ただし、場合によっては、JSON 形式のデータなど、非リレーショナル構造でデータを保存する必要があります。

MySQL では、JSON タイプのフィールドを使用して非リレーショナル ストレージを実装できます。たとえば、ユーザー情報を保存するテーブルを作成します。このテーブルには、ユーザーの個人情報を保存するための JSON タイプ フィールド「info」が含まれています。

CREATE TABLE users (
   id INT(11) NOT NULL AUTO_INCREMENT,
   name VARCHAR(50) NOT NULL,
   info JSON NOT NULL,
   PRIMARY KEY (id)
);
ログイン後にコピー

上記のコードでは、「users 」テーブルという名前のテーブルを作成しました。これには、id、name、info の 3 つのフィールドが含まれます。情報フィールドのタイプは JSON で、ユーザーの個人情報を保存するために使用されます。実際のアプリケーションでは、BLOB、TEXT などの他の非リレーショナル型も使用できます。

2. Go 言語を使用して MySQL データベースに接続する

Go 言語で MySQL データベースに接続するには、サードパーティのライブラリを使用する必要があります (最も一般的に使用されているのは github.com/) go-sql-driver/mysql。まず、このライブラリをインストールする必要があります。このライブラリは、次のコマンドでインストールできます。

go get github.com/go-sql-driver/mysql
ログイン後にコピー

このライブラリは、データベースの接続と操作に使用できる sql.DB タイプを提供します。データベースに接続する前に、次のような構成情報を提供する必要があります。

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 は、データベースへの接続に使用されるデータ ソース名です。これには、ユーザー名、パスワード、ホストアドレス、ポート番号、データベース名、エンコード方式、その他の情報が含まれます。上記のコードでは、ローカル ホスト アドレスとデフォルトの 3306 ポート番号を使用し、ユーザー名とパスワードを対応する値に置き換えました。接続が成功すると、db 変数には接続した MySQL データベースへの参照が含まれます。

3. 非リレーショナル データを読み書きするための Go 言語

MySQL データベースに接続した後、sql.DB タイプを使用して SQL クエリを実行し、関連データを取得できます。非リレーショナル データの場合、MySQL の JSON 関数を使用して、JSON タイプのフィールドの読み取りと書き込みを行うことができます。

  1. 非リレーショナル データの書き込み

次のコードは、新しいユーザー情報を users テーブルに書き込む方法を示しています。

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())
ログイン後にコピー

この例では、まず、ユーザー情報を含む JSON 文字列を定義します。次に、Exec 関数を使用して挿入ステートメントを実行し、ユーザー情報をパラメーターとして SQL ステートメントに渡します。挿入が成功すると、新しいユーザーの ID を取得して出力します。

  1. 非リレーショナル データの読み取り

次に、非リレーショナル フィールドに格納されている JSON データを読み取る方法を説明します。 MySQL の JSON_EXTRACT 関数を使用すると、JSON のキーと値のペアを簡単に取得できます。次のコードは、users テーブル内のすべてのユーザー情報を読み取る方法を示しています。

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"])
}
ログイン後にコピー

この例では、最初に db.Query 関数を使用して、users テーブル内のすべてのデータをクエリします。次に、 rows.Scan 関数を使用して、データの各行の ID、名前、および情報フィールドを読み取ります。次に、情報フィールドの値をタイプ map[string]interface{} のユーザー変数に変換し、解析に json.Unmarshal 関数を使用します。最後に、各ユーザーの ID、名前、年齢、性別、メールアドレスを出力します。

  1. 非リレーショナル データの更新

最後に、非リレーショナル フィールドに格納されているデータを更新する方法を示します。 MySQL の JSON_SET 関数を使用すると、JSON フィールドのキーと値のペアを動的に更新できます。次のコードは、ユーザーの電子メール アドレスを新しい値に更新する方法を示しています。

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)
ログイン後にコピー

この例では、Exec 関数を使用して更新ステートメントを実行し、新しい電子メール アドレスをパラメーターとして SQL ステートメントに渡します。 JSON_SET 関数。 WHERE 句を使用して、更新するユーザーの名前を指定します。更新が成功したら、影響を受ける行数を確認して出力します。

4. 概要

Go 言語では、MySQL データベースを使用して非リレーショナル データを保存できます。 JSON タイプのフィールドを使用すると、JSON 形式でデータを簡単に保存および処理できます。この記事では、非リレーショナル テーブルの作成、MySQL データベースへの接続、非リレーショナル データの読み取りと書き込みの方法とテクニック、およびデータ操作のための JSON_EXTRACT 関数と JSON_SET 関数の使用例を紹介します。これらは、MySQL をより効果的に使用して、実際のアプリケーションで非リレーショナル データを処理するのに役立ちます。

以上がGo 言語で MySQL を使用して非リレーショナル データ処理を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート