OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBaseデータベース

  • エコシステム統合の概要
  • ORMフレームワーク
    • Java
      • SpringBootサンプルプログラム
      • SpringBatchサンプルプログラム
      • Spring JDBCサンプルプログラム
      • SpringDataJPAサンプルプログラム
      • Hibernateサンプルプログラム
      • MyBatisサンプルプログラム
    • Python
      • SQLAlchemyによるOceanBaseデータベース接続サンプルプログラム
      • peeweeによるOceanBaseデータベース接続サンプルプログラム
      • Tortoise ORM による OceanBase データベース接続サンプルプログラム
    • Go
      • GORMサンプルプログラム
    • Rust
      • SeaORM による OceanBase データベース接続サンプルプログラム
    • Ruby
      • ActiveRecordによるOceanBaseデータベース接続サンプルプログラム
      • Sequel で OceanBase データベースに接続するサンプルプログラム
      • Ruby on RailsによるOceanBaseデータベース接続サンプルプログラム
    • Node.js
      • SequelizeでOceanBaseデータベースに接続する
      • TypeORMを使用してOceanBaseデータベースに接続する
      • Prismaを使用してOceanBaseデータベースに接続する
      • Drizzle ORMを使用してOceanBaseデータベースに接続する
    • C#
      • Dapperを使用してOceanBaseデータベースに接続する
      • SqlSugarを使用してOceanBaseデータベースに接続する
      • FreeSQLを使用してOceanBaseデータベースに接続する
    • PHP
      • Yii 2.0 ORMサンプルプログラム
      • Laravel Eloquent ORMサンプルプログラム
  • データベースのバージョン管理
    • Liquibaseを使用したOceanBaseデータベースのバージョンの管理
    • Flywayを使用してOceanBaseデータベースを統合し、バージョン管理を実現する
  • データ統合
    • dbtを使用したOceanBaseデータの分析
    • Flink DirectLoadを使用したOceanBaseのダイレクトインポート
    • SeaTunnelを使用したOceanBaseデータの読み取りと同期
    • Maxwellを使用したOceanBaseデータの読み取り
    • Debeziumを使用してOceanBaseに接続し、データを取得する
    • Spark Catalogを使用してOceanBaseデータベースに接続する
    • Apache NiFiを使用してOceanBaseデータベースと統合する
  • SQL開発
    • WebLogicを使用してOceanBaseデータベースに接続する
    • DBeaverを使用してOceanBaseデータベースに接続する
    • Navicatを使用してOceanBaseデータベースに接続する
    • DataGripでOceanBaseデータベースに接続する
    • TablePlusでOceanBaseデータベースに接続する
    • DMSを使用したOceanBaseデータベースの管理
  • 編成とスケジューリング
    • AirflowとOceanBaseデータベースの連携
    • PowerJobとOceanBaseデータベースの連携
    • DolphinSchedulerにOceanBaseデータソースを設定する
    • LinkisとOceanBaseデータベースの統合
  • 可視化ツール
    • SupersetとOceanBaseを使用したデータ分析
    • Power BIでOceanBaseに接続してデータを取得する
    • Quick BIでOceanBaseに接続してデータを取得する
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • データベース管理
    • NineDataを使用したOceanBaseデータソースの管理
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • AI
    • OpenAI
    • Qwen
    • OceanBaseデータベースとLangChainの統合
    • OceanBaseデータベースのベクトル検索機能とLlamaIndexの連携
    • OceanBaseデータベースのベクトル検索機能とDifyの連携
    • OceanBaseデータベースとn8nの連携
    • OceanBase MCP ServerとTraeの連携
    • OceanBaseデータベースとSpring AI Alibabaの連携
    • OceanBase MCP ServerとClineの連携
    • OceanBase MCP ServerとCursorの連携
    • OceanBase MCP ServerとContinueの連携
    • Google GenAI Toolboxを使用して独自のOceanBase MCP Serverを構築する
    • OceanBaseデータベースとCamelAIの連携
    • OceanBase VectorとFirecrawlの連携
    • OceanBase VectorとHugging Faceの連携
    • OceanBase VectorとOllamaの連携
    • OceanBaseデータベースとGoogle Geminiの連携
    • OceanBase VectorとCloudflare Workers AIの連携
    • OceanBase VectorとJina AIの連携
    • OceanBase MCP ServerとAugment Codeの連携
    • OceanBase MCP ServerとClaude Codeの連携
    • OceanBase MCP ServerとKiroの連携

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBaseデータベース
  3. master

GORMサンプルプログラム

最終更新:2026-10-10 03:12:37

前提条件
操作手順
ステップ1:(オプション) Go言語とドライバーをインストールする
ステップ2:OceanBaseデータベース接続情報を取得する
ステップ3: gorm-oceanbase プロジェクトのデータベース接続情報を修正する
ステップ4:go-oceanbase プロジェクトを実行する
プロジェクトコードについて
go.modコードの紹介
go.sumコードの紹介
test.goコードの紹介
全コード表示
関連ドキュメント

本記事では、GORMとOceanBaseデータベースを使用してアプリケーションを構築し、テーブルの作成、データの挿入、クエリなどの基本的な操作を実行する方法を紹介します。

クリックしてgorm-oceanbaseサンプルプロジェクトをダウンロード

前提条件

OceanBaseデータベース、Go言語、および関連するドライバーをインストールし、環境変数が正しく設定されていることを確認してください。

説明

この記事のコードはIntelliJ IDEA 2021.3.2 (Community Edition)バージョンを使用して記述されています。ご自身の好みに合わせて、適切なツールを選択してサンプルコードを確認することも可能です。

  • OceanBaseデータベースをインストールする
  • Go言語をインストールする
  • Go-SQL-Driver/MySQLドライバーをインストールする

操作手順

説明

本記事で示されている操作手順は、Windows環境で生成されたものです。他のOS環境やコンパイラを使用している場合は、操作手順が若干異なる場合があります。

  1. (オプション) Go言語とドライバーをインストールします。
  2. OceanBaseデータベースへの接続情報を取得します。
  3. gorm-oceanbase プロジェクトのデータベース接続情報を修正します。
  4. gorm-oceanbase プロジェクトを実行します。

ステップ1:(オプション) Go言語とドライバーをインストールする

Go言語とGo-SQL-Driver/MySQLドライバーがインストール済みの場合は、この手順はスキップできます。インストールされていない場合は、以下の手順に従ってインストールしてください。

  1. Go言語をインストールする

    1. Go言語のインストールパッケージをダウンロードします:Go公式Webサイトから、ご自身のOSに適したインストールパッケージをダウンロードできます。

      説明

      この記事で使用するGoインストールパッケージの名前はgo1.20.6.windows-amd64.msiです。

    2. Go言語をインストールします:ダウンロードしたインストールパッケージをダブルクリックし、指示に従ってインストールします。

    3. 環境変数を設定します:Go言語のインストールパスをシステムのPATH環境変数に追加します。

      • Windows環境では、コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 環境変数 > システム変数 で、Pathの値に C:\usr\local\go\bin を追加します。

      • LinuxまたはmacOS環境では、~/.bashrc または ~/.bash_profile ファイルを編集し、以下の内容を追加します。

        export PATH=$PATH:/usr/local/go/bin
        

      説明

      \usr\local\go\bin はデフォルトのインストールディレクトリです。Go言語のインストール時にインストールディレクトリを変更した場合は、対応するディレクトリに置き換えてください。

    4. インストールの検証:Shellコマンドラインで以下のコマンドを入力して、Go言語のバージョン情報を確認し、インストールが成功したかどうかを検証します:

      C:\Users\admin\> go version
      go version go1.20.6 windows/amd64
      
  2. Go-SQL-Driver/MySQLドライバーをインストールする

    Go言語のバージョンに応じて、異なるインストール方法を選択できます。Go-SQL-Driver/MySQLドライバーをインストールする際は、対応するプロジェクトディレクトリに移動して、コマンドラインターミナルを開く必要があります。Go-SQL-Driver/MySQL の詳細については、Githubを参照してください。

    インストールコマンドは以下のとおりです:

    C:\Users\admin\Desktop\go-oceanbase>go get -u github.com/go-sql-driver/mysql
    go: downloading github.com/go-sql-driver/mysql v1.7.1
    go: added github.com/go-sql-driver/mysql v1.7.1
    

    バージョンまたはネットワークの問題により、go get コマンドでインストールできない場合は、go install コマンドを使用して go-sql-driver/mysql をインストールできます。

    1. githubの go-sql-driver/mysql リポジトリを go/src ディレクトリにクローンします。

      cd /usr/local/go/src   
      git clone https://github.com/go-sql-driver/mysql.git
      

      注意

      /usr/local/go/src をGoの実際のインストールディレクトリに置き換える必要があります。

    2. go install コマンドを使用してインストールします。

      go install mysql
      

      注意

      一部のバージョンの go install では、デフォルトの実行ディレクトリが /src でない場合があります。go install の実行結果のエラーメッセージから、実際のディレクトリを確認することができます。例えば、エラーメッセージ cannot find package "mysql" in: /usr/local/go/src/vendor/mysql の場合は、mysqlフォルダを /src/vendor ディレクトリに配置してからインストールコマンドを実行する必要があります。

    3. Go-SQL-Driver/MySQLドライバーがインストールされているかどうかを確認します。インストールに失敗した場合は、エラー情報に従って修正してください。

      go list -m github.com/go-sql-driver/mysql
      

ステップ2:OceanBaseデータベース接続情報を取得する

OceanBaseデータベースのデプロイ担当者または管理者に連絡して、対応するデータベース接続情報を取得します。

obclient  -h{host} -u{user_name} -p****** -P{port} -D{schema_name}

データベース接続文字列には、データベースへのアクセスに必要なパラメータ情報が含まれています。この接続文字列を使用して、データベースへのログインを検証し、接続文字列のパラメータ情報が正しいことを確認できます。

説明

test.go ファイルには、このURL情報が必要です。

パラメータの説明:

  • host:OceanBaseデータベースへの接続IPアドレスを提供します。ODP接続方式ではODPアドレスを使用し、直接接続方式ではOBServerノードのIPアドレスを使用します。
  • user_name:テナントの接続アカウント。ODP接続の一般的な形式には、次のものがあります:ユーザー名@テナント名#クラスタ名 または クラスタ名:テナント名:ユーザー名。直接接続方式の形式:ユーザー名@テナント名。
  • password:アカウントのパスワード。
  • port:OceanBaseデータベースへの接続ポートを提供します。ODP接続方式のデフォルトポートは 2883 で、ODPデプロイ時にカスタマイズ可能です。直接接続方式のデフォルトポートは 2881 で、OceanBaseデータベースのデプロイ時にカスタマイズ可能です。
  • schema_name:アクセスするスキーマ名です。

ステップ3: gorm-oceanbase プロジェクトのデータベース接続情報を修正する

ステップ2:OceanBaseデータベース接続情報 に記載されている情報に基づいて、test.go ファイル内のデータベース接続情報を修正します。test.go ファイルを選択し、右クリックして 開く方法 を選択すると、メモ帳 またはその他のエディタで開くことができます。

例:

  • OBServerノードのIPアドレスは 10.10.10.1 です。
  • アクセスポートは2881を使用します。
  • アクセスするスキーマ名は test です。
  • テナントの接続アカウントは root@mysql です。root@mysql はOceanBaseデータベースで作成されたMySQLモデルのユーザーテナントであり、test はテナント root@mysql のユーザー名です。
  • パスワードは ****** です。

サンプルコードは以下のとおりです:

dsn := "root@mysql:******@tcp(10.10.10.1:2881)/test?charset=utf8mb4&parseTime=True&loc=Local"

ステップ4:go-oceanbase プロジェクトを実行する

コードの編集が完了したら、プロジェクトディレクトリでコマンドラインターミナルを開き、go run でGoファイルを以下のとおり実行します:

PS D:\demo\go-demo\gorm-oceanbase> go run test.go

(オプション) LinuxまたはmacOS環境では、一時的な環境変数を設定してからでないと go run を実行できません。

export PATH=$PATH:/usr/local/go/bin
go run test.go

実行後、以下の内容が返された場合は、データベースへの接続に成功し、サンプルステートメントが正しく実行されたことを意味します:

PS D:\demo\go-demo\gorm-oceanbase> go run test.go
1
<nil>
1
{1 OceanBase 12 2022-06-01 08:00:00 +0800 CST}
<nil>
1
{1 ob 13 2023-06-01 00:00:00 +0000 UTC}
<nil>
1
1
<nil>
1
time="2023-08-09T15:55:46+08:00" level=debug msg=DropTable duration=589.2031ms

2023/08/09 15:55:47 D:/demo/go-demo/gorm-oceanbase/test.go:85 SLOW SQL >= 200ms
[336.194ms] [rows:0] DROP TABLE IF EXISTS `users` CASCADE

プロジェクトコードについて

gorm-oceanbaseをクリックしてプロジェクトコードをダウンロードします。これは、gorm-oceanbase という名前の圧縮ファイルです。 解凍すると、gorm-oceanbase という名前のフォルダが作成されます。ディレクトリ構造は以下のとおりです:

|-- go.mod
|-- go.sum
|-- test.go

ファイルの説明:

  • go.mod:Go言語のモジュールファイルは、プロジェクトのモジュール依存関係とバージョン情報を定義するために使用されます。
  • go.sum:Go V1.11以降のバージョンで追加されたモジュール管理ファイルであり、プロジェクトの依存モジュールとそのバージョン情報、および対応するチェックサム(Checksum)を記録するために使用されます。
  • test.go:Goのソースコードファイルで、プロジェクトのサンプルコードが含まれています。

go.modコードの紹介

go.mod ファイルは、プロジェクトのモジュール名、Goのバージョン番号、および依存関係に関する宣言を定義するために使用されます。

go.mod ファイルには、以下の内容が含まれています:

  • module gorm-oceanbase:これはプロジェクトのモジュール名であり、プロジェクトのネームスペースを定義しています。Go 1.16以降では、モジュール名とプロジェクトのルートディレクトリ名がマッチしている必要があります。

  • go 1.20:これはプロジェクトに必要なGoのバージョンです。

  • require:これはプロジェクトの依存関係宣言です。これは、プロジェクトが依存するサードパーティライブラリとそのバージョン情報をリストアップしたものです。この依存関係は間接的な依存関係であり、別の依存関係である go.sum と関連付けられています。

    • github.com/go-sql-driver/mysql:Go-SQL-Driver/MySQLドライバーは、MySQLデータベースに接続し、操作を実行するために使用されます。
    • github.com/jinzhu/inflection:文字列変換ライブラリです。文字列を単数形、複数形、キャメルケースなどに変換するために使用します。
    • github.com/jinzhu/now:時間処理ライブラリです。現在時刻の取得、時間差の計算、時刻のフォーマット変換などの機能を提供します。
    • github.com/sirupsen/logrus:ログライブラリです。プログラムの実行時のログ情報を記録するために使用されます。
    • golang.org/x/sys:システムライブラリは、システムレベルの操作関数と定数を提供します。
    • golang.org/x/text:Unicode文字列や数値のフォーマット処理などを行うためのテキスト処理ライブラリです。
    • gorm.io/driver/mysql:GORMのMySQLドライバーは、GORMでMySQLデータベースに接続し、操作を実行するために使用されます。
    • gorm.io/gorm:GORM ORMフレームワークです。データベース操作を簡素化するために使用されます。

コードは以下のとおりです:

module gorm-oceanbase

go 1.20

require (
 github.com/go-sql-driver/mysql v1.7.1 // indirect
 github.com/jinzhu/inflection v1.0.0 // indirect
 github.com/jinzhu/now v1.1.5 // indirect
 github.com/sirupsen/logrus v1.9.3 // indirect
 golang.org/x/sys v0.5.0 // indirect
 golang.org/x/text v0.12.0 // indirect
 gorm.io/driver/mysql v1.5.1 // indirect
 gorm.io/gorm v1.25.2 // indirect
)

go.sumコードの紹介

go.sum ファイルは、プロジェクトの依存関係情報を定義するために使用されます。各依存関係は、ライブラリの名前、バージョン番号、ハッシュ値の3つの部分で構成されています。

go.sum ファイルには、以下の内容が含まれています:

  • github.com/sirupsen/logrus:ログライブラリです。プログラムの実行時のログ情報を記録するために使用されます。
  • golang.org/x/text:Unicode文字列や数値のフォーマット処理などを行うためのテキスト処理ライブラリです。
  • gorm.io/driver/mysql:GORMのMySQLドライバーは、GORMでMySQLデータベースに接続し、操作を実行するために使用されます。
  • gorm.io/gorm:GORM ORMフレームワークです。データベース操作を簡素化するために使用されます。

説明

go.sum ファイルは、実行環境によって必要な依存関係が異なるため、実行時の指示に従って必要な依存関係をダウンロードしてください。

コードは以下のとおりです:

github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw=
gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o=
gorm.io/gorm v1.25.2 h1:gs1o6Vsa+oVKG/a9ElL3XgyGfghFfkKA2SInQaCyMho=
gorm.io/gorm v1.25.2/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=

test.goコードの紹介

test.go ファイルは、Go-SQL-Driver/MySQLドライバーを使用してMySQLデータベースに接続し、GORMが提供するAPIを使用してデータベース操作を行う方法を定義しています。 test.go ファイルには、以下の内容が含まれています:

  1. main パッケージを定義します。 package main は、実行可能なプログラムのパッケージであることを示します。このパッケージには main() 関数が含まれており、プログラムの実行時にこの関数が実行されます。

  2. import パッケージを定義します。

    import ステートメントで、以下のパッケージをインポートしています:

    • fmt:フォーマットされた入出力の提供に使用される関数です。これは、データを文字列形式に変換してコンソールやその他のデバイスに出力するための関数群を定義しています。
    • time:時間関連の関数とタイプを提供するために使用されます。
    • os:OS関連の関数とタイプを提供するために使用されます。
    • gorm.io/driver/mysql:MySQLデータベースドライバーは、MySQLデータベースに接続し、操作を実行するために使用されます。
    • gorm.io/gorm:Go言語の構造体をデータベーステーブルにマッピングし、データベースのクエリや操作のためのメソッドを提供するために使用されます。
    • golang.org/x/text/transform:文字セット変換やUnicode処理など、テキスト処理の基本機能を提供するために使用されます。
    • github.com/sirupsen/logrus:いくつかのログの出力とフォーマットに関する機能を提供するために使用されます。

    コードは以下のとおりです:

    import (
      "fmt"
      "time"
      "os"
      "gorm.io/driver/mysql"
      "gorm.io/gorm"
      "golang.org/x/text/transform"
      "github.com/sirupsen/logrus"
    )
    
  3. User 構造体を定義します。

    User という名前の構造体を定義しています。これはユーザーの基本情報を表すもので、4つのフィールドを含んでいます。ユーザーの一意な識別子 ID、ユーザー名 Name、ユーザーの年齢 Age、ユーザーの誕生日 Birthday。

    コードは以下のとおりです:

    type User struct {
    ID       int
    Name     string
    Age      int
    Birthday time.Time
    
    }
    
  4. transformString 関数を定義します。 transformString という名前の関数を定義します。この関数は、文字列を指定されたエンコーディング形式に変換するために使用されます。これは、2つのパラメータ、str と encoder を受け取ります。関数は transform.String 関数を呼び出すことで、文字列を指定されたエンコーディング形式に変換します。変換中にエラーが発生した場合は、元の文字列が返されます。最終的に、関数は変換後の文字列または元の文字列を返します。

    コードは以下のとおりです:

    func transformString(str string, encoder transform.Transformer) string {
        result, _, err := transform.String(encoder, str)
        if err != nil {
            return str
        }
        return result
    }
    
  5. main 関数を定義します。

    main 関数を呼び出すことで、作成されたユーザー情報の追加、削除、変更、クエリを行い、logrus を使用して対応するデバッグログをコンソールに出力しました。

    1. logrus を初期化します。

      logrus パッケージを使用して、ログ出力を初期化します。ログ出力形式をテキスト形式に、ログレベルを Debug レベルに設定し、標準出力ストリームに出力します。

      コードは以下のとおりです:

      logrus.SetFormatter(&logrus.TextFormatter{})
      logrus.SetLevel(logrus.DebugLevel)
      logrus.SetOutput(os.Stdout)
      
    2. データベースに接続します。

      dsn という名前の文字列変数を定義します。この変数は、MySQLデータベースへの接続に必要な情報(ユーザー名、パスワード、ホストアドレス、ポート番号、データベース名、文字セットなど)を含みます。gorm.Open 関数を呼び出してMySQLデータベースに接続し、dsn 変数と gorm.Config タイプのパラメータを渡し、接続オブジェクトを返します。接続エラーが発生した場合は、エラー情報が出力され、プログラムが終了します。

      コードは以下のとおりです:

      dsn := "user_name:******@tcp(host:port)/schema_name?charset=utf8mb4&parseTime=True&loc=Local"
      db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
      if err != nil {
          fmt.Println(err.Error())
          return
      }
      
    3. データベース操作。

      gorm.DB オブジェクトを使用して、データベース操作を行います。これには、自動移行、データ挿入、データクエリ、データ更新、データ削除などの操作が含まれます。具体的な手順は以下のとおりです:

      1. db.AutoMigrate 関数を呼び出すと、User 構造体に対応するテーブルが自動的に移行されます。テーブルが存在しない場合は、テーブルが作成されます。defer キーワードと db.Migrator().DropTable 関数を用いて、users テーブルの削除を遅延させます。これは、プログラム終了時にテーブルが削除されることを意味します。
      2. user という名前の User 構造体のインスタンスを作成し、データベースに挿入します。
      3. IDが1のユーザーに対するクエリを実行し、クエリ結果を出力します。
      4. IDが1のユーザーの情報を更新して、データベースに保存します。
      5. IDが1のユーザーを削除し、削除結果を出力します。

      コードは以下のとおりです:

      db.AutoMigrate(&User{})
      defer db.Migrator().DropTable("users")
      // 開始時間を記録
      start := time.Now()
      // User構造体のインスタンスをuserという名前で作成し、データベースに挿入します。 
      user := User{Name: "OceanBase", Age: 12, Birthday: time.Date(2022, 06, 01, 00, 00, 00, 00, time.UTC)}
      result := db.Create(&user)
      fmt.Println(user.ID)
      fmt.Println(result.Error)
      fmt.Println(result.RowsAffected)
      // IDが1のユーザーに対するクエリを実行し、クエリ結果を出力します。
      user = User{ID: 1}
      result = db.First(&user)
      fmt.Println(user)
      fmt.Println(result.Error)
      fmt.Println(result.RowsAffected)
      // IDが1のユーザーの情報を更新して、データベースに保存します。
      user = User{ID: 1, Name: "ob", Age: 13, Birthday: time.Date(2023, 06, 01, 00, 00, 00, 00, time.UTC)}
      result = db.Save(&user)
      fmt.Println(user)
      fmt.Println(result.Error)
      fmt.Println(result.RowsAffected)
      // IDが1のユーザーを削除し、削除結果を出力します。
      user = User{ID: 1}
      result = db.Delete(&user)
      fmt.Println(user.ID)
      fmt.Println(result.Error)
      fmt.Println(result.RowsAffected)
      
  6. ログを出力します。

    time.Since 関数を呼び出してプログラムの実行時間を計算し、logrus.WithFields 関数を呼び出してフィールド付きのログレコーダーを作成します。さらに Debug 関数を呼び出してログ情報を出力します。

    コードは以下のとおりです:

    logrus.WithFields(logrus.Fields{
        "duration": time.Since(start),
        }).Debug("DropTable")
    

全コード表示

go.mod
go.sum
test.go
module gorm-oceanbase

go 1.20

require (
 github.com/go-sql-driver/mysql v1.7.1 // indirect
 github.com/jinzhu/inflection v1.0.0 // indirect
 github.com/jinzhu/now v1.1.5 // indirect
 github.com/sirupsen/logrus v1.9.3 // indirect
 golang.org/x/sys v0.5.0 // indirect
 golang.org/x/text v0.12.0 // indirect
 gorm.io/driver/mysql v1.5.1 // indirect
 gorm.io/gorm v1.25.2 // indirect
)
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
gorm.io/driver/mysql v1.5.1 h1:WUEH5VF9obL/lTtzjmML/5e6VfFR/788coz2uaVCAZw=
gorm.io/driver/mysql v1.5.1/go.mod h1:Jo3Xu7mMhCyj8dlrb3WoCaRd1FhsVh+yMXb1jUInf5o=
gorm.io/gorm v1.25.2 h1:gs1o6Vsa+oVKG/a9ElL3XgyGfghFfkKA2SInQaCyMho=
gorm.io/gorm v1.25.2/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
package main

import (
  "fmt"
  "time"
  "os"
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
    "golang.org/x/text/transform"
    "github.com/sirupsen/logrus"
)

type User struct {
  ID       int
  Name     string
  Age      int
  Birthday time.Time

}

// 文字列を指定されたエンコーディングに変換する
func transformString(str string, encoder transform.Transformer) string {
    result, _, err := transform.String(encoder, str)
    if err != nil {
        return str
    }
    return result
}

func main() {

      // logrusを初期化する
      logrus.SetFormatter(&logrus.TextFormatter{})
      logrus.SetLevel(logrus.DebugLevel)
      logrus.SetOutput(os.Stdout)


  dsn := "user_name:******@tcp(host:port)/schema_name?charset=utf8mb4&parseTime=True&loc=Local"

  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  if err != nil {
    fmt.Println(err.Error())
    return

  }

  db.AutoMigrate(&User{})
  defer db.Migrator().DropTable("users")

  // 開始時間を記録
  start := time.Now()

  user := User{Name: "OceanBase", Age: 12, Birthday: time.Date(2022, 06, 01, 00, 00, 00, 00, time.UTC)}
  result := db.Create(&user)
  fmt.Println(user.ID)
  fmt.Println(result.Error)
  fmt.Println(result.RowsAffected)

  user = User{ID: 1}
  result = db.First(&user)
  fmt.Println(user)
  fmt.Println(result.Error)
  fmt.Println(result.RowsAffected)

  user = User{ID: 1, Name: "ob", Age: 13, Birthday: time.Date(2023, 06, 01, 00, 00, 00, 00, time.UTC)}
  result = db.Save(&user)
  fmt.Println(user)
  fmt.Println(result.Error)
  fmt.Println(result.RowsAffected)

  user = User{ID: 1}
  result = db.Delete(&user)
  fmt.Println(user.ID)
  fmt.Println(result.Error)
  fmt.Println(result.RowsAffected)



  // ログ出力
  logrus.WithFields(logrus.Fields{
      "duration": time.Since(start),
    }).Debug("DropTable")

}

関連ドキュメント

Go-SQL-Driver/MySQLに関する情報は、OceanBaseデータベースのオープンソースコミュニティにも掲載されています。詳細については、Go-SQL-Driver/MySQLを参照してください。

前のトピック

Tortoise ORM による OceanBase データベース接続サンプルプログラム
前へ

次のトピック

SeaORM による OceanBase データベース接続サンプルプログラム
次へ
このページの内容
前提条件
操作手順
ステップ1:(オプション) Go言語とドライバーをインストールする
ステップ2:OceanBaseデータベース接続情報を取得する
ステップ3: gorm-oceanbase プロジェクトのデータベース接続情報を修正する
ステップ4:go-oceanbase プロジェクトを実行する
プロジェクトコードについて
go.modコードの紹介
go.sumコードの紹介
test.goコードの紹介
全コード表示
関連ドキュメント