質問するログイン新規登録

回答編集履歴

5

add

2017/09/14 04:34

投稿

mattn
mattn

スコア5030

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

2017/09/14 04:34

投稿

mattn
mattn

スコア5030

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

2017/09/11 10:57

投稿

mattn
mattn

スコア5030

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

2017/09/11 00:53

投稿

mattn
mattn

スコア5030

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

2017/09/11 00:19

投稿

mattn
mattn

スコア5030

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
  ## マッピング