3274744 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

傀儡師の館.Python

傀儡師の館.Python

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Recent Posts

Calendar

Keyword Search

▼キーワード検索

Category

Archives

2023.12
2023.11
2023.10
2023.09
2023.08

Freepage List

Profile

kugutsushi

kugutsushi

Free Space

設定されていません。
2007.12.12
XML
カテゴリ:Python
2007-11-25 に pysqlite 2.4.0 がリリースされていて、pysqlite 2.4.0 Changelog を見たら、おもしろことができるようになっているのね。

Python 2.5 対応が入って with が使えるようになって、ここを抜けたときに con.commit() してくれる。insert に失敗したら、con.rollback() してくれる。

with con:
con.execute("insert into person(firstname) values (?)", ("Joe",))

ただし、エラーはちゃんと自分でキャッチして対処する必要はある。

try:
with con:
con.execute("insert into person(firstname) values (?)", ("Joe",))
except sqlite.IntegrityError:
print "couldn't add Joe twice"

もう一つおもしろいのは、APSW でコネクションをはって createscalarfunction で関数を定義しておいて、そのコネクションを pysqlite が引き継いで使うとかおもしろいことができるようになっている。ある関数を使いたいのに sqlite にはないというのであれば、この仕組みで作ってしまえば使えるようになる。

from pysqlite2 import dbapi2 as sqlite
import apsw

apsw_con = apsw.Connection(":memory:")
apsw_con.createscalarfunction("times_two", lambda x: 2*x, 1)
# Create pysqlite connection from APSW connection
con = sqlite.connect(apsw_con)
result = con.execute("select times_two(15)").fetchone()[0]
assert result == 30
con.close()


その他、set_progress_handler とか実装されたので、長時間かかるようなクエリを発行したときに進行状況を Python 側から把握できるようになったとかあるらしいなどなど、地道に改良されていたのね。


アクセス解析






お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.12.12 07:05:29
コメント(0) | コメントを書く



© Rakuten Group, Inc.