インターネットの発展に伴い、特に一部のデータ集約型アプリケーションでは、データの保存と使用がますます重要になってきています。 Go 言語は、新興プログラミング言語として、高速、安全、同時実行性、効率的な機能を備え、進化するデータ ウェアハウスとビッグ データのシナリオで徐々に登場しつつあります。この記事では、Go 言語でデータの永続化と CRUD 操作を実装する方法を紹介します。
ステップ 1: 適切なデータベースの選択
Go 言語には、PostgreSQL、SQLite、MySQL、MariaDB、MongoDB などを含む多くのデータベース ドライバーが用意されています。プログラムの作成を開始する前に、まずアプリケーションに適したデータベースを選択し、関連するドライバーについて学習を続ける必要があります。その中で最も一般的に使用されるのは次のとおりです。
ここでは、さまざまなデータベースの違いについては詳しく説明しません。簡単に言うと、リレーショナル データとの複雑な関係を確立する場合は、通常 SQL データベースの方が実用的ですが、半構造化データを管理する場合は NoSQL データベースが適しています。多次元データ クエリの効率的な処理が必要な場合には、より適している可能性があります。
ステップ 2: データベース ドライバーを作成する
Go 言語には、すべての Go プログラマーに統一された SQL インターフェイスを提供する、database/sql などの多くの組み込みデータベース ドライバーが用意されています。もちろん、データベースドライバーが異なれば実装されるインターフェースも異なります。
ここでは、MySQL データベースを例として、Go 言語でデータベース接続を確立する方法を説明します。 Go 言語のデータベース/SQL ドライバーは、さまざまなリレーショナル データベースに統合された SQL インターフェイスを提供するため、プログラマは関連するパラメーターを変更するだけで、アプリケーションでさまざまな種類のリレーショナル データベースを使用できます。次に、MySQL ドライバーの作成例を示します。
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func getDatabaseConnection() (*sql.DB, error) { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test") return db, err }
上記のコードでは、MySQL ドライバーが import
を使用して導入されていることがわかります。次に、sql.Open()
メソッドを使用してデータベース接続を確立し、アカウント番号、パスワード、ホスト アドレス、ポート番号などの接続パラメータを渡します。ここでは、パスワードなしの root
アカウントを使用しています。ホスト アドレスは 127.0.0.1
、ポート番号は 3306
、データベース名は ## です。 #テスト## #。 プロセスが完了したら、
メソッドを呼び出してデータベースに正常に接続したかどうかをテストし、* 型の接続オブジェクトを返す必要があります。 SQL.DB
。 ステップ 3: CRUD 操作を実行する
データベース接続を確立したので、CRUD 操作を実行できます。 CRUD 操作は、それぞれ追加 (Create)、読み取り (Read)、更新 (Update)、および削除 (Delete) を表します。これらの操作には通常、データベース内のテーブルのデータの読み取り、クエリ、変更、削除が含まれます。
以下は簡単な CRUD の例です。これにより、「id、name、age」という 3 つのフィールドを持つレコードをデータベースに追加できます。
func createUser(newUser User) error { db, err := getDatabaseConnection() if err != nil { return err } defer db.Close() _, err = db.Exec("INSERT INTO users(name, age) VALUES(?, ?)", newUser.Name, newUser.Age) if err != nil { return err } return nil }
上記のコードでは、## が使用されています。 #db.Exec()
メソッドはデータベースにデータを書き込みます。このうち、? は動的バインディングパラメータです。このようにして、プリコンパイルされた SQL クエリ ステートメントに対応するパラメータが自動的に入力されるため、プログラムのセキュリティが確保されます。
db.Query() メソッドを使用して、データベースからクエリ操作を実行することもできます。
func getUserByID(id int64) (*User, error) { db, err := getDatabaseConnection() if err != nil { return nil, err } defer db.Close() row := db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", id) user := new(User) err = row.Scan(&user.ID, &user.Name, &user.Age) if err != nil { return nil, err } return user, nil }上記の例では、db.QueryRow() メソッドを使用してクエリを実行し、クエリ結果を
row
オブジェクトに記録します。row.Scan() メソッドを使用して、クエリ結果の特定の列の値を
User 構造体に入力します (
User 構造体にフィールド
ID、名前、年齢 )。
概要
以上がGo 言語でのデータ永続化と CRUD 操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。