Go アプリケーションで GORM を使用して Postgres データベースに接続する

Go アプリケーションで GORM を使用して Postgres データベースに接続する

Postgres は、その多くの機能と使いやすさから、人気のある SQL データベースの 1 つです。Postgres は ACID に準拠しており、マルチバージョン同時実行制御、非同期レプリケーション、ネストされたトランザクション、先行書き込みログなどの機能を備えています。他の多くの機能とともに、これらの機能により、Postgres は頼りになる SQL データベース管理システムになっています。

Go エコシステムには、Postgres を含むさまざまな DBMS と対話するための多くのパッケージがあります。Go は、データベース ドライバーを使用して SQL データベースを操作するための組み込みのdatabase/sqlパッケージを提供します。Go データ構造を使用すると、GORM などの一般的なサードパーティの ORM を統合して、データベースと簡単にやり取りできます。

GORM と Postgres を使い始める

GORMホームページ

GORM パッケージは、Go エコシステムで最も人気のある ORM の 1 つです。これは、開発者にとって使いやすく、機能が豊富で、database/sqlパッケージに基づいて構築されているためです。

GORM は、自動移行、ロギング、準備済みステートメント、トランザクション、およびシャーディングの機能を提供します。このパッケージは、構造体やその他の組み込みデータ型を使用したコード ファーストのアプローチを採用しています。

作業ディレクトリで次の端末コマンドを実行して、GORM パッケージをプロジェクトの依存関係に追加します。

go get gorm.io/gorm\n

GORM パッケージを動作させるには、データベース ドライバーが必要です。GORM は、一般的な DBMS 用のデータベース ドライバーを提供します。作業ディレクトリで次のコマンドを実行して、GORM Postgresドライバーをインストールします。

go get gorm.io/driver/postgres\n

GORM を使用して Postgres と Go を接続する

これらのパッケージを Go ファイルにインポートして、ORM とデータベース ドライバーを操作します。logパッケージを使用してエラーをコンソールに記録し、fmtパッケージを使用して出力を出力します。

import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n

実行環境で Postgres データベースに接続するには、接続文字列が必要です。接続文字列を構成するフィールドのモデルとして構造体を使用できます。構造体を使用すると、特に依存性注入の場合に、さまざまな値の変更とテストが容易になります。

接続文字列を構成するフィールドの構造体モデルの例を次に示します。

type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n

以下は、データベース接続の典型的な関数です。接続ステータスに応じて、接続インスタンスとエラーを返します。

func NewConnection() (*gorm.DB, error) {\n return db, nil\n}\n

接続構造体モデルをインスタンス化し、Postgres データベースのフィールドに値を入力できます。

    configurations: = Config{\n Host: "database_Host",\n Port: "database_Port",\n Password: "database_Password",\n User: "database_User",\n DBName: "database_Name",\n SSLMode: "false",\n }\n dsn: = fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)\n

dsn変数は、Sprintfフォーマット メソッドと Go 文字列フォーマット動詞を使用して、Config 構造体のフィールドを連結し Postgres 接続文字列を設定します。

Openメソッドを使用して、GORM とのデータベース接続を開くことができます。Openメソッドは、データベース ドライバーから開いている接続を受け取り、GORM パッケージのConfigタイプからオプションの構成のリストを受け取ります。接続インスタンスとオプションのエラーを返します。

    db, err: = gorm.Open(postgres.Open(dsn), &gorm.Config{})\n if err! = nil {\n return db, err\n }\n

データベースに ping を実行して接続ステータスを確認する

データベースに ping を実行して、ブール値の結果またはデータベース接続が無効な場合はエラーを返す関数を使用して、正常性/オンライン ステータスを確認できます。

func PingDb() (bool, error) {\n \n return true, nil\n}\n

データベースに ping を実行するには、新しい接続インスタンスを作成する必要があります。NewConnection関数を使用して接続インスタンスを作成する例を次に示します。

    connectionInstance, err: = NewConnection()\n if err! = nil {\n log.Fatalf("The database connection failed %v", err.Error())\n }\n

接続インスタンスを取得したら、接続のDBメソッドを使用してデータベース インスタンスを作成します。

    dbConnection, err: = connectionInstance.DB()\n if err! = nil {\n return false, err\n } \n

データベース インスタンスのPingメソッドを使用して、データベースに ping を実行できます。Pingメソッドは、接続が成功した場合、エラーまたはnilを返します。

\n err = dbConnection.Ping()\n if err! = nil {\n return false, err\n } else {\n \n fmt.Println("The connection was successful")\n }\n

実行が成功すると、次のような出力が得られます。

接続成功の出力

database/sql パッケージを使用して、Go で SQL データベースを操作できます

database/sqlパッケージは拡張可能であり、ほとんどのGo データベース パッケージとドライバーはパッケージを拡張するため、ORM を選択する代わりにプロジェクトでパッケージを使用できます。

GORM は、未加工の SQL を構築するための SQL ビルダーも提供します。これは、サポートされていない操作に役立ちます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です