サーチ…
備考
SQLデータベースドライバのリストについては、公式のGo wikiの記事SQLDriversを参照してください。
SQLドライバは、ドライバによってのみ使用できるように、 _
によってインポートされ、接頭辞付きです。
クエリ
この例では、 database/sql
を使用してデータベースを照会する方法を示しています。例としてMySqlデータベースを例に挙げます。
package main
import (
"log"
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dsn := "mysql_username:CHANGEME@tcp(localhost:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal(err)
}
defer sql.Close()
rows, err := db.Query("select id, first_name from user limit 10")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var username string
if err := rows.Scan(&id, &username); err != nil {
log.Fatal(err)
}
fmt.Printf("%d-%s\n", id, username)
}
}
MySQL
MySQLを有効にするには、データベースドライバが必要です。たとえばgithub.com/go-sql-driver/mysql
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
データベースを開く
データベースのオープンはデータベース固有であり、ここにはいくつかのデータベースの例があります。
Sqlite 3
file := "path/to/file"
db_, err := sql.Open("sqlite3", file)
if err != nil {
panic(err)
}
MySql
dsn := "mysql_username:CHANGEME@tcp(localhost:3306)/dbname"
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
MongoDB:接続&挿入&削除&更新&クエリ
package main import ( "fmt" "time" log "github.com/Sirupsen/logrus" mgo "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) var mongoConn *mgo.Session type MongoDB_Conn struct { Host string `json:"Host"` Port string `json:"Port"` User string `json:"User"` Pass string `json:"Pass"` DB string `json:"DB"` } func MongoConn(mdb MongoDB_Conn) (*mgo.Session, string, error) { if mongoConn != nil { if mongoConn.Ping() == nil { return mongoConn, nil } } user := mdb.User pass := mdb.Pass host := mdb.Host port := mdb.Port db := mdb.DB if host == "" || port == "" || db == "" { log.Fatal("Host or port or db is nil") } url := fmt.Sprintf("mongodb://%s:%s@%s:%s/%s", user, pass, host, port, db) if user == "" { url = fmt.Sprintf("mongodb://%s:%s/%s", host, port, db) } mongo, err := mgo.DialWithTimeout(url, 3*time.Second) if err != nil { log.Errorf("Mongo Conn Error: [%v], Mongo ConnUrl: [%v]", err, url) errTextReturn := fmt.Sprintf("Mongo Conn Error: [%v]", err) return &mgo.Session{}, errors.New(errTextReturn) } mongoConn = mongo return mongoConn, nil } func MongoInsert(dbName, C string, data interface{}) error { mongo, err := MongoConn() if err != nil { log.Error(err) return err } db := mongo.DB(dbName) collection := db.C(C) err = collection.Insert(data) if err != nil { return err } return nil } func MongoRemove(dbName, C string, selector bson.M) error { mongo, err := MongoConn() if err != nil { log.Error(err) return err } db := mongo.DB(dbName) collection := db.C(C) err = collection.Remove(selector) if err != nil { return err } return nil } func MongoFind(dbName, C string, query, selector bson.M) ([]interface{}, error) { mongo, err := MongoConn() if err != nil { return nil, err } db := mongo.DB(dbName) collection := db.C(C) result := make([]interface{}, 0) err = collection.Find(query).Select(selector).All(&result) return result, err } func MongoUpdate(dbName, C string, selector bson.M, update interface{}) error { mongo, err := MongoConn() if err != nil { log.Error(err) return err } db := mongo.DB(dbName) collection := db.C(C) err = collection.Update(selector, update) if err != nil { return err } return nil }
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow