b554cf7f8cc5509bc89fffea39c09348

[python] sqlite3で遊ぼう その1

さすがにテキストやらで外部情報を持つのに限界が出てきたので、SQLiteの勉強を初めてみました。

SQLはずいぶん前にMySQL+PHPの組み合わせでさわったのが最後なので、SQLコマンドやら仕組みも勉強中です。

とりあえず最初は、テーブルを作って、カラムを追加して、テーブルの要素を引っ張ってくるまで。
基本は、connectして、cursorを作って、execute(SQL文)というのが大まかな流れのようです。
cur.execute(“select ~”) で結果を取得する際は、いったん検索結果をためておいて、その検索結果から抜き出す(Fetch)処理を行う必要があるとのことなので、fetchall() で、全結果を取得して
結果をプリントしています。
参考) フェッチについて 、 カーソルについて

少々困ったのが、例のごとく日本語問題。
DBに登録する際は、基本unicodeにしてから登録しないとエラーになってしまいます。
取得する時はencode(‘utf-8’)してあげればOKでした。

とりあえずOKですが、毎度毎度 connect()とかcursor()とかclose()とかするのはなんかアレだよなぁということで、勉強をかねてdecoratorにしてみました。
そのコードがこんな感じ。

decorator内でconnectして、関数にcursorを渡して、終わったらclose()
これでエラーは出ないでちゃんと結果は帰ってきたのですが、こういう使い方はOKなんでしょうかね(汗

追記。

DBファイルのありかをデコレータの引数で渡すように修正してみた版。
なんというか、デコレータの構文ってものすごくキモチワルイというか
本当に書き方コレで良いのかよ感が半端ないですね… def が三重…

そんなこんなで、SQL文とかDBアクセス周りの書き方を勉強して
ちゃんとしたもの書けるようになりたいですズサーc⌒っ゚Д゚)っ

久しぶりにコードはりつけるのにGistを使ってみました。
こっちのほうが見やすくてよさそうかなぁ

コメントを残す

メールアドレスが公開されることはありません。


*