忍者ブログ
     2008年11月14日 開始
[13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

これは引用だよ
http://tawasi.infogami.com/development/pysqlite_1

Development taoy NG (Next Generation)

Python + SQLite、面白い

いやぁ、Python + SQLite の組み合わせって、なかなか面白そうだねぇ。 Debian では、sqlite3 ってパッケージと、python-pysqlite2 ってパッケージを入れてやれば、それで動作する。

from pysqlite2 import dbapi2 as sqlite

って書いて、Python モジュールをロードしておけば、後は、

con = sqlite.connect("mytest.db")

って感じで接続できちゃう。でもって、

cur = con.cursor()
cur.execute("select * from table1;")

とかで、SQLite3 に対して SQL 文を発行してデータを取得できちゃう。それも Python のオブジェクトとして取得。なので、後はフツーに Python のオブジェクトとして扱える。例えば、

print cur.fetchall()

で、全データ一覧表示。簡単。

んで、execute メソッドの引数がリテラルである必要は当然ないので、

SELECT = "select * from table1 order by id"

なんて定義しておけば、

con.execute(SELECT)

で実行できてしまう。良く使う SELECT 文とか、INSERT 文の部品とか、イチイチ書いてると間違いやすいもんはこうしてあらかじめ決まった名前で登録しちゃえば良いんだな。そうすりゃ、プログラム中のどこでもそれを使えちゃう。

便利だ。

もしかしてもしかすると、これぐらいのことはフツーのプログラミング言語だったら当り前の事なのかもしれないけどさ、私が今迄に自分自身で書いてきたもんだと、こういうのがちょっと面倒だったのだった。喰い物については他人の過去を多少は断罪出来るかもしれんけど、プログラミングについてはまるっきりの悪食だった、ってことかもしれませんね。スマンこってす(誰にだ?)

で。

SQLite ってのが、クライアントサーバ型の RDBMS で _ ない _ お蔭で、ちょっと変わった接続を実現できる。

con = sqlite.connect(":memory:")

これで、メモリ上に SQLite のデータベースを新規に展開しちゃう。私が作ろうとしてるような、利用者が極端に少ないような Web アプリケーションだったら、ユーザがログインしてきたときに、ディスク上のファイルにあるデータをメモリ上にデータベースとして展開しちゃえる、ってことだよね。でもって、python のカーソルもやっぱりメモリ上に展開されるから、そりゃぁ動作も速いだろうよ。

もちろん、大規模で権限の複雑な、要は整合性が可能なかぎり完全である必要のあるような、トランザクションベースの Webアプリケーション、それも同時接続ユーザが数千人以上、なぁんてもんだったら、これをスケーラブルに実現するなんらかの方法と云うか手段を考慮する必要はあるけれど、コト、私がやろうと思ってることに関して云えば、これはけっこうお誂え向きのプラットフォームでございますのではないかしらん。

うーむ。

もちょっと、いろいろと試して悩んでみよう。

PR


忍者ブログ [PR]
お天気情報
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
リンク
フリーエリア
最新CM
最新TB
プロフィール
HN:
No Name Ninja
性別:
非公開
バーコード
ブログ内検索
P R
カウンター
ブログの評価 ブログレーダー