Nim試してみた
pythonに似た文法と噂のNimを触ってみる
MySQLに接続してちょっとごにょごにょ
Nim導入
ほぼ公式通りなので省略 最後にpathを通すことを忘れずに nim-lang.org
MySQL接続の為にdb_mysqlを導入
パッケージ管理ツール nimbleを使って入れていく
[root@localhost nim]# nimble search db_mysql db: url: https://github.com/jlp765/db (git) tags: wrapper, database, module, sqlite, mysql, postgres, db_sqlite, db_mysql, db_postgres description: Unified db access module, providing a single library module to access the db_sqlite, db_mysql and db_postgres modules. license: MIT website: https://github.com/jlp765/db [root@localhost nim]# nimble install db
簡単なDB操作をしてみる
import db_mysql let db = open("localhost", "root", "", "test") # testテーブルの中身を全て消す db.exec(sql"delete from test") # testテーブルに10行インサート for i in 1..10: db.exec(sql"insert into test(id, name) values(?, 'test')", i) # testテーブルの中を出力 for i in db.fastRows(sql"select * from test"): echo i db.close()
シンプルでわかりやすい・・・
比較用に goで同じことやる
package main import( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:@/test") if err != nil { panic(err.Error()) } defer db.Close() // testテーブルの中身を全て消す _, err = db.Exec("delete from test") if err != nil { panic(err.Error()) } // testテーブルに10行インサート for i := 1; i < 11; i++ { _, err = db.Exec(fmt.Sprintf("insert into test(id, name) values(%d, 'test')", i)) if err != nil { panic(err.Error()) } } // testテーブルの中を出力 rows, err := db.Query("select * from test") for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { panic(err.Error()) } fmt.Println(id, name) } }
括弧が無くてpythonライクにかけるnimの方が好み
簡単な操作しかしてないから、またコロコロ意見代わるかもしれない