Goでmysqlライブラリ作りました
RFC: Database API for GoということでPeterさんが提案していて
goを触るがてらMySQL接続を作り始めたところ、PeterさんとEdenさんから一緒にやらないかといわれたので
Peterさんが提案してるRFC: Database API for Goの形で作成してみました。
追記
FetchManyとFetchAllも実装してみました。
あとは、パラメータのbindを行えば、そこそこ使い物になるかと思います。
http://yone098.github.com/go-mysql/
s, e = c.Prepare("SELECT * FROM __hello ORDER BY i ASC"); cur, e = c.Execute(s); rows, e = cur.FetchAll(); fmt.Printf("%s\n", rows); for _, y := range rows { fmt.Printf("data: %s\n", y); } cur.Close();
sqliteとmysqlでのsample
go-mysql sample
info := mysql.ConnectionInfo{ "host": "localhost", "port": 3306, "uname": "yone098", "pass": "password", "dbname": "golang" }; c, e := mysql.Open(info); s, e = c.Prepare("SELECT * FROM __hello ORDER BY i ASC"); tuple, e := cur.FetchOne(); fmt.Printf("%s\n", i, tuple[0]); cur.Close(); e = c.Close();
go-sqlite sample
info := sqlite3.ConnectionInfo{"name": "test.db"}; c, e := sqlite3.Open(info); s, e := c.Prepare("SELECT * FROM users"); c, e := c.Execute(s); d, e := cc.FetchOne(); fmt.Printf("data: %s\n", d); e = cc.Close(); e = c.Close();
正直、現在のDB用のAPIは、使いづらいというかDBごとの差異をうまく吸収出来てないので
(継承元のdb.goがsqlite寄りな実装になっているため)、これから良い方向になればと思います。
JDBCは良く出来てるなと今更ながら感心しました。
Go is not Hiromi Go!