Golang SQLite の例

Golang Sqlite No Li



Golang はオープンソースのプログラミング言語です。さまざまな種類のデータベース ツールをサポートします。 SQLite は人気のあるリレーショナル データベース エンジンであり、Golang には SQLite データベースに接続してさまざまな種類のデータベース タスクを実行するために使用できるデータベース/SQL パッケージがあります。 SQLite データベースに接続し、テーブルの作成、テーブルへのレコードの挿入、テーブルからのデータの読み取り、テーブルのデータの更新、テーブルからのレコードの削除など、さまざまな種類のデータベース操作を実行する方法を示します。このチュートリアルでは Golang スクリプトを使用します。

前提条件:

このチュートリアルの例を実践する前に、次のタスクを完了する必要があります。

A. Golang 言語がまだインストールされていない場合は、システムにインストールします。次のコマンドを実行して、インストールされている Golang のバージョンを確認します。







$ go バージョン



B. sqlite3 がまだインストールされていない場合は、システムにインストールします。 Sqlite3 は Ubuntu 20 以降にデフォルトでインストールされます。次のコマンドを実行して、インストールされている sqlite3 のバージョンを確認します。



$ sqlite3 --バージョン





C. 次のコマンドを実行して「golang-sqlite」という名前のフォルダーを作成し、SQLite データベース ファイルと Golang ファイルが保存されるそのフォルダーに移動します。

$ mkdir golang-sqlite
$ cd golang-sqlite

D. 次のコマンドを実行して、Golang で SQLite を使用するために必要な Golang パッケージをダウンロードします。



$ github.com/mattn/go-sqlite3 を取得してください

Golang と SQLite を使用したデータベース操作

このチュートリアルでは、SQLite データベースと Golang スクリプトを使用した基本的なデータベース操作を示します。このチュートリアルで説明するデータベース タスクのリストを以下に示します。

  1. SQLiteデータベースを作成する
  2. SQLite データベース接続を作成する
  3. 新しいテーブルを作成する
  4. テーブルにデータを挿入する
  5. テーブルからデータを読み取る
  6. テーブルのデータを更新する
  7. テーブルからデータを削除する

Golang を使用して SQLite データベースを作成する

「test.db」という名前の新しい SQLite データベース ファイルを作成する次のスクリプトを使用して Golang ファイルを作成します。 4 つのモジュールがスクリプトにインポートされます。 「fmt」モジュールは、端末で出力を印刷するために使用されます。 「ログ」モジュールは、エラーが発生したときにプログラムを中止するために使用されます。 「os」モジュールは、SQLite データベースの作成とエラーの処理に使用されます。 「go-sqlite3」モジュールは、Golang を介して SQLite データベースに接続するために使用されます。ここでは、「os」モジュールの Create() メソッドを使用して SQLite データベースを作成します。データベースが正常に作成されると、成功メッセージが端末に表示されます。それ以外の場合、プログラムは終了します。 Close() メソッドは、データベース接続を閉じるために呼び出されます。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
'あなた'
_ 「github.com/mattn/go-sqlite3」


機能 主要 () {

// 新しい SQLite データベースを作成します
データベース エラー := あなた 作成する ( 「テスト.db」
// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {
// 成功メッセージを出力します
fmt プリントイン ( 「データベースが作成されました。」
}
//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「db_connect.go」ファイルを実行します。

$ db_connect.go を実行します

「ls」コマンドを実行して、「test.db」データベース ファイルが作成されているかどうかを確認します。

$ls

次の出力は、成功メッセージ「データベースが作成されました」が出力に表示され、「test.db」ファイルが現在の場所に作成されたことを示しています。

Golang を使用して SQLite データベースに接続する

「test.db」データベース ファイルを開き、データベースとの接続を確立する次のスクリプトを使用して Golang ファイルを作成します。このタスクを実行するために、Golang のデータベース/SQL モジュールがここにインポートされます。ここでは、open() メソッドを使用して、既存の SQLite データベースとの接続を確立します。データベースが正常に接続されると、成功メッセージが端末に表示されます。それ以外の場合、プログラムは終了します。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
「データベース/SQL」
_ 「github.com/mattn/go-sqlite3」


機能 主要 () {

// 新しい SQLite データベースを作成します
データベース エラー := SQL 開ける ( 「sqlite3」 「テスト.db」
// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {
// 成功メッセージを出力します
fmt プリントイン ( 「データベースは正常に接続されました。」
}
//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「db_connect2.go」ファイルを実行します。

$ db_connect2.go を実行します

次の出力は、「test.db」データベース ファイルが開かれ、正常に接続されたことを示しています。成功メッセージ「データベースは正常に接続されました」が出力に表示されます。

Golang を使用して SQLite データベースにテーブルを作成する

次のスクリプトを使用して Golang ファイルを作成し、「test.db」データベース ファイル内に「members」という名前のデータベース テーブルを作成します。ここでは Exec() メソッドを使用して、6 つのフィールドと主キーを持つ「members」テーブルを作成する CREATE TABLE クエリを実行します。データベース内にテーブルが正常に作成されると、成功メッセージが出力されます。それ以外の場合、プログラムは終了します。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
「データベース/SQL」
_ 「github.com/mattn/go-sqlite3」


機能 主要 () {

// 新しい sqlite データベースを作成します
データベース エラー := SQL 開ける ( 「sqlite3」 「テスト.db」
// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {
定数 クエリ = `
CREATE TABLE IF NOT EXISTS メンバー (
id INTEGER NOT NULL 主キー、
名前 CHAR(40) NOT NULL、
mtype CHAR(100) NOT NULL、
CHAR(50) に電子メールを送信し、
住所テキストが NULL ではありません、
モバイル CHAR(25) NOT NULL);`

_ エラー := データベース 幹部 ( クエリ );

もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {
// 成功メッセージを出力します
fmt プリントイン ( 「テーブルが正常に作成されました。」
}

}
//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「create_table.go」ファイルを実行します。

$ go run create_table.go

次の出力は、テーブルがデータベースに正常に作成されたことを示しています。成功メッセージ「テーブルが正常に作成されました」がターミナルに表示されます。

SQLite にログインして、データベースにテーブルが作成されているかどうかを確認できます。

次のコマンドを実行して、「test.db」データベースで SQLite を実行します。

$ sqlite3テスト.db

SQLite コマンド プロンプトから「.tables」SQLite コマンドを実行して、データベースのテーブル名を確認します。

sqlite3 > .tables

次の出力は、Golang スクリプトの実行によって作成された「members」テーブルがデータベースに含まれていることを示しています。

Golang を使用して SQLite テーブルにレコードを挿入する

INSERT クエリを複数回実行するか、1 つの INSERT クエリに複数の値を追加することで、テーブルに複数のレコードを挿入できます。単一の INSERT クエリを使用して、「test.db」データベース ファイルの「members」テーブルに 3 つのレコードを挿入する次のスクリプトを含む Golang ファイルを作成します。ここでは Exec() メソッドを使用して INSERT クエリを実行します。レコードがテーブルに正常に挿入されると、成功メッセージが出力されます。それ以外の場合、プログラムは終了します。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
「データベース/SQL」
_ 「github.com/mattn/go-sqlite3」


機能 主要 () {

// 新しい SQLite データベースを作成します
データベース エラー := SQL 開ける ( 「sqlite3」 「テスト.db」 )
// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー )
} それ以外 {
定数 クエリ = `
INSERT INTO メンバー (ID、名前、タイプ、電子メール、アドレス、携帯電話)
VALUES(1, 'ネハル・アーメッド', 'シルバー', 'nehal@gmail.com','36, ダンモンディ 2, ダッカ','01844657342'),
(2, 'アビル・チョードリー', 'ゴールド', 'abir@gmail.com','102, Mirpur 10, Dhaka','01994563423'),
(3, 'ミルザ・アッバス', 'シルバー', 'abbas@gmail.com','12, ジガタラ、ダッカ','01640006710');`


//クエリを実行します
_ エラー := データベース 幹部 ( クエリ );

もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー )
} それ以外 {
// 成功メッセージを出力します
fmt プリントイン ( 「レコードは正常に挿入されました。」 )
}
}

//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「insert_table.go」ファイルを実行します。

$ go run insert_table.go

次の出力は、レコードがテーブルに正常に挿入されたことを示しています。成功メッセージ「レコードが正常に挿入されました」が出力に表示されます。

SQLite にログインして、「members」テーブルに 3 つのレコードが正常に挿入されたかどうかを確認できます。

次のコマンドを実行して、「test.db」データベースで SQLite を実行します。

$ sqlite3テスト.db

次の SELECT クエリを実行して、「members」テーブルのすべてのコンテンツを読み取ります。

sqlite3 > 選択 * メンバーから ;

次の出力は、「members」テーブルに Golang スクリプトによって挿入された 3 つのレコードが含まれていることを示しています。

Golang を使用して SQLite テーブルのデータを読み取る

「members」テーブルのレコードを読み取る次のスクリプトを使用して Golang ファイルを作成します。 SELECT クエリから返された値を格納するには、Golang で変数を定義する必要があります。このスクリプトでは、SELECT クエリを使用して「members」テーブルから 5 つのフィールドが取得されます。したがって、「mtype」フィールドの値が「Silver」である「members」テーブルの 5 つのフィールドの値を保存するために、スクリプト内で 5 つの変数が定義されています。ここでは、Query() メソッドを使用して SELECT クエリを実行します。次に、「for」ループを使用して、SELECT クエリによって返された結果セットを読み取ります。 printf() 関数は、結果セットのフォーマットされた値を出力するために使用されます。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
「データベース/SQL」
_ 「github.com/mattn/go-sqlite3」
)

機能 主要 () {

// 新しい SQLite データベースを作成します
データベース エラー := SQL 開ける ( 「sqlite3」 「テスト.db」 )

// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー )
} それ以外 {

//行の値を格納する変数を宣言します
だった ID 整数
だった 名前
だった mtype
だった 住所
だった 携帯
定数 クエリ = `ID、名前、タイプ、アドレス、携帯電話を選択します
メンバーから
WHERE mtype = 'シルバー';`


//クエリを実行します
エラー := データベース クエリ ( クエリ );

もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {

// 成功メッセージを出力します
fmt プリントイン ( 「全シルバーメンバーの記録:」
fmt プリントイン ( 「ID \t 名前 \t \t メンバータイプ \t 住所 \t \t 連絡先番号'
のために () {
スキャン ( &id &名前 タイプ(&M) &住所 &携帯
fmt プリントフ ( '%d \t %s \t %s \t %s \t %s \n ID 名前 mtype 住所 携帯
}
}
}
//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「select_table.go」ファイルを実行します。

$ go run select_table.go

「members」テーブルには、「mtype」フィールドに「Silver」を含む 2 つのレコードが存在します。次の出力は、SELECT クエリによって返される「members」テーブルの 2 つのレコードを示しています。

Golang を使用して SQLite テーブルのデータを更新する

id 値 2 を含む「members」テーブルの mobile フィールドの値を変更する次のスクリプトを含む Golang ファイルを作成します。ここでは、Exec() メソッドを使用して UPDATE クエリを実行します。テーブル内のレコードが正常に更新されると、成功メッセージが出力されます。それ以外の場合、プログラムは終了します。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
「データベース/SQL」
_ 「github.com/mattn/go-sqlite3」


機能 主要 () {

// 新しい SQLite データベースを作成します
データベース エラー := SQL 開ける ( 「sqlite3」 「テスト.db」
// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {
定数 クエリ = `
メンバーを更新 SET mobile = '018563452390' WHERE id = 2;`

_ エラー := データベース 幹部 ( クエリ );

もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー
} それ以外 {
// 成功メッセージを出力します
fmt プリントイン ( 「レコードは正常に更新されました。」
}
}
//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「update_table.go」ファイルを実行します。

$ go run update_table.go

「members」テーブルの 2 行目には、id 値 2 が含まれています。次の出力は、テーブルのレコードが正常に更新されたことを示しています。成功メッセージ「レコードは正常に更新されました」が端末に表示されます。

SQLite にログインして、members テーブルのレコードが更新されたかどうかを確認できます。

次のコマンドを実行して、「test.db」データベースで SQLite を実行します。

$ sqlite3テスト.db

次の SELECT クエリを実行して、「members」テーブルのすべてのコンテンツを読み取ります。

sqlite3 > 選択 * メンバーから ;

2のモバイルフィールドの値 nd スクリプト実行前のメンバーテーブルのレコードは「01994563423」です。次の出力は、2 の mobile フィールドの値を示しています。 nd スクリプトの実行後、メンバーテーブルのレコードは「018563452390」に変更されます。

Golangを使用してSQLiteテーブルのデータを削除する

3 を削除する次のスクリプトで Golang ファイルを作成します。 rd ID 値 3 を含む「members」テーブルのレコード。ここでは Exec() メソッドを使用して DELETE クエリを実行します。レコードがテーブルから正常に削除されると、成功メッセージが出力されます。それ以外の場合、プログラムは終了します。

パッケージ 主要

//必要なモジュールをインポートする
輸入 (
「fmt」
'ログ'
「データベース/SQL」
_ 「github.com/mattn/go-sqlite3」
)

機能 主要 () {

// 新しい SQLite データベースを作成します
データベース エラー := SQL 開ける ( 「sqlite3」 「テスト.db」 )
// エラーがないかチェックする
もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー )
} それ以外 {
//削除クエリを定義する
定数 クエリ = `メンバー WHERE id = 3 から削除;`
//クエリを実行します
_ エラー := データベース 幹部 ( クエリ );

もし エラー != なし {
// エラーメッセージをログに追加します
ログ 致命的 ( エラー )
} それ以外 {
// 成功メッセージを出力します
fmt プリントイン ( 「レコードは正常に削除されました。」 )
}
}
//データベース接続を閉じる
データベース 近い ()
}

次のコマンドを実行して、「delete_table.go」ファイルを実行します。

$ go run delete_table.go

次の出力は、3 rd 「members」テーブルのレコードが正常に削除されました。成功メッセージ「レコードは正常に削除されました」が端末に表示されます。

SQLite にログインして、members テーブルのレコードが削除されているかどうかを確認できます。

次のコマンドを実行して、「test.db」データベースで SQLite を実行します。

$ sqlite3テスト.db

次の SELECT クエリを実行して、「members」テーブルのすべてのコンテンツを読み取ります。

sqlite3 > 選択 * メンバーから ;

次の出力は、3 の値が rd members テーブルのレコードはスクリプトの実行後に削除され、他の 2 つのレコードが出力に表示されます。

結論

SQLite と Golang はどちらも、そのシンプルさと軽量な機能で現在人気があります。これらのツールを使用すると、単純なデータベースベースのアプリケーションを簡単に実装できます。アプリケーションの主要な部分は、CRUD 操作を実装することです。このチュートリアルでは、複数の Golang ファイルを使用して、Golang スクリプトと SQLite データベースを使用して CRUD 操作を実装する方法を説明します。 Go 言語と SQLite データベースを初めて学習する場合、このチュートリアルはこれらを基礎から学ぶのに役立ちます。