回答編集履歴
5
add
answer
CHANGED
|
@@ -107,3 +107,36 @@
|
|
|
107
107
|
// import _ "github.com/jinzhu/gorm/dialects/sqlite"
|
|
108
108
|
// import _ "github.com/jinzhu/gorm/dialects/mssql"
|
|
109
109
|
```
|
|
110
|
+
|
|
111
|
+
#追記2について
|
|
112
|
+
|
|
113
|
+
以下のコードで test.sqlite3 にレコードが追加されている(foo/barも入っている)事は確認出来ています。
|
|
114
|
+
DB Browser for SQLite のリロードボタンなどで最新が表示されないでしょうか。
|
|
115
|
+
|
|
116
|
+
```go
|
|
117
|
+
package main
|
|
118
|
+
|
|
119
|
+
import (
|
|
120
|
+
"github.com/jinzhu/gorm"
|
|
121
|
+
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
type UserData struct {
|
|
125
|
+
gorm.Model
|
|
126
|
+
Userid string
|
|
127
|
+
Password string
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
func main() {
|
|
131
|
+
db, err := gorm.Open("sqlite3", "test.sqlite3")
|
|
132
|
+
if err != nil {
|
|
133
|
+
panic("failed to connect database: " + err.Error())
|
|
134
|
+
}
|
|
135
|
+
defer db.Close()
|
|
136
|
+
// Migrate the schema
|
|
137
|
+
db.AutoMigrate(&UserData{})
|
|
138
|
+
// Create
|
|
139
|
+
user := &UserData{Userid: "foo", Password: "bar"}
|
|
140
|
+
db.Create(&user)
|
|
141
|
+
}
|
|
142
|
+
```
|
4
fix
answer
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
この形式は、`gorm.Model` を内包する形式です。こう書く事で実際は以下の struct メンバも内
|
|
37
|
+
この形式は、`gorm.Model` を内包する形式です。こう書く事で実際は以下の struct メンバも内包される事になります。
|
|
38
38
|
|
|
39
39
|
```
|
|
40
40
|
type Model struct {
|
3
fix
answer
CHANGED
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
使われるテーブルを全てここでマッピングして下さい。gorm はなかなか優秀で、マッピングだけでなくマイグレートも行ってくれます。開発途中で struct フィールドを増やしてもある程度は gorm が修正してくれます。ただし、あまりに大きい修正は追従してくれませんので、大きな変更をする際には DB ファイルをバックアップしていた方が良いです。
|
|
57
57
|
|
|
58
|
+
なお、gorm 等の様に ORM を使う場合、Create Table すらも ORM に任せるのが一般的ですが、テーブルのフィールドに `gorm:` のプレフィックスタグを付ける事で既存の DDL を使ったテーブル操作も出来ます。
|
|
58
59
|
|
|
59
60
|
## 検索
|
|
60
61
|
|
2
fix
answer
CHANGED
|
@@ -96,4 +96,13 @@
|
|
|
96
96
|
これは、このプログラムが sqlite3 のデータベースを使いますよというおまじないです。golang ではインポートするけど参照しない物は `_` で名付けします。なんとなく、`github.com/mattn/go-sqlite` をインポートすれば良い気がするかもしれませんが、gorm の様な ORM は、各 DBMS の SQL 方言を吸収する必要がありますよね。そこで各ドライバ毎に dialect (方言) を設定するのです。
|
|
97
97
|
sqlite には方言がないので処理が書かれていませんが、postgres のドライバは幾らか方言用の処理が書かれています。
|
|
98
98
|
|
|
99
|
-
[https://github.com/jinzhu/gorm/blob/master/dialects/postgres/postgres.go](https://github.com/jinzhu/gorm/blob/master/dialects/postgres/postgres.go)
|
|
99
|
+
[https://github.com/jinzhu/gorm/blob/master/dialects/postgres/postgres.go](https://github.com/jinzhu/gorm/blob/master/dialects/postgres/postgres.go)
|
|
100
|
+
|
|
101
|
+
sqlite3 だけでなく他のデータベースにもつなげたいならば、使う分 import する必要があります。
|
|
102
|
+
|
|
103
|
+
```go
|
|
104
|
+
import _ "github.com/jinzhu/gorm/dialects/mysql"
|
|
105
|
+
// import _ "github.com/jinzhu/gorm/dialects/postgres"
|
|
106
|
+
// import _ "github.com/jinzhu/gorm/dialects/sqlite"
|
|
107
|
+
// import _ "github.com/jinzhu/gorm/dialects/mssql"
|
|
108
|
+
```
|
1
fix
answer
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
```
|
|
22
22
|
という db ファイルのパスを指定する事も出来ますし、URI 形式でも接続出来ます。
|
|
23
23
|
|
|
24
|
-
https://sqlite.org/uri.html
|
|
24
|
+
[https://sqlite.org/uri.html](https://sqlite.org/uri.html)
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
## マッピング
|