2010年8月2日月曜日

Python sqlite3を使う

import os, sqlite3

def regist():
    con = sqlite3.connect("data.db")    # 通常
    #con = sqlite3.connect('temp.db', isolation_level=None)  # 自動コミット
    #con = sqlite3.connect(":memory:")   #メモリーDB

    # テーブルを作成
    sql = u"""
create table 社員 (
  名前 varchar(10),
  年齢 integer,
  部署 varchar(200)
);
"""
    try:
        # Tableを作成
        con.execute(sql)

        # SQL
        sql = u"insert into 社員 values ('橋本', 26, '広報部')"
        con.execute(sql)
        con.commit()
        # SQL
        sql = u"insert into 社員 values (?, ?, ?)"
        con.execute(sql, (u"小泉", 35, u"営業部"))
        con.execute(sql, (u"亀井", 40, u"営業部"))
        con.commit()
        # SQL
        con.executemany(u"insert into 社員 values (?, ?, ?)",
                    [(u"堀", 44, u"営業部"),
                     (u"鈴木", 23, u"営業部")])
        con.commit()
    finally:
        con.close()
def retrieve():
    con = sqlite3.connect("data.db")    # 通常
    c = con.cursor()
    c.execute(u"select * from 社員")
    print "---------------"
    for row in c: # rowはtuple
        print row[0], row[1], row[2]

def main():
    regist()
    retrieve()
if __name__ == '__main__':
    main()

2010年8月1日日曜日

Pythonでシリアライズ

ちょっとした設定や計算の途中結果を一時保存するには便利な環境。


■marshalを使う


import os,marshal

def writedump():
    data1 = range(1,100,2)
    data2 = ['hori','suzuki','yamada']
    with open('datafile.dat','wb') as outfile:
        marshal.dump(data1,outfile)
        marshal.dump(data2,outfile)
def readdump():
    with open('datafile.dat','rb') as infile:
        print "1:" + str(marshal.load(infile))
        print "2:" + str(marshal.load(infile))
def main():
    writedump():
    readdump()

if __name__ == '__main__':
    main()


■cPickleを使う


import os,cPickle

def writedump():
    data1 = '0'*100000
    data2 = ['hori','suzuki','yamada']
    with open('datafile_pickle.dat','wb') as outfile:
        cPickle.dump(obj = data1,file = outfile, protocol = 2)
        cPickle.dump(obj = data2,file = outfile, protocol = 2)
def readdump():
    with open('datafile_pickle.dat','rb') as infile:
        print "1:" + str(cPickle.load(infile))
        print "2:" + str(cPickle.load(infile))
def main():
    writedump()
    readdump()

if __name__ == '__main__':
    main()

■さらにZip圧縮する


import os,cPickle,gzip

def writedump():
    data1 = '0'*100000
    data2 = ['hori','suzuki','yamada']
    outfile = gzip.open('datafile_pickle_zip.zip','wb')
    cPickle.dump(obj = data1,file = outfile, protocol = 2)
    cPickle.dump(obj = data2,file = outfile, protocol = 2)
    outfile.close()
def readdump():
    infile = gzip.open('datafile_pickle_zip.zip','rb')
    print "1:" + str(cPickle.load(infile))
    print "2:" + str(cPickle.load(infile))
    infile.close()
def main():
    writedump()
    readdump()

if __name__ == '__main__':
    main()




2010年6月20日日曜日

matplotlib

matplotlibはPythondeグラフが使えるようになるモジュール。

まずはnumpyを入れる。

easy_install numpy

インストール時にかなりのエラーがでるが、無視。

http://matplotlib.sourceforge.net/index.html
https://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-0.99.3/

からインストーラーをダウンロードしてインストール。

サンプルはhttp://matplotlib.sourceforge.net/gallery.html#にいっぱいあるし。
楽しいね。



2010年6月16日水曜日

AndroidでPython カメラで写真を撮って自動保存

import android
import time

droid = android.Android()

fileName = time.strftime("%Y%m%d%H%M%S")

droid.cameraTakePicture('/sdcard/My Documents/' + fileName + '.jpg')

print 'end'

2010年5月29日土曜日

PythonからTwitterに投稿

インストールは

easy_install python-twitter

Pythonからは


import twitter
api = twitter.Api(username='xxx', password='xxx')
ret = api.PostUpdate(u"Test")

2010年5月16日日曜日

HTS Desire (X06HT) のケースが来た

先日機種変したHTS Desire (X06HT) のケースが来ましたので報告を・・。

買ったのはこれです。
Leather Case for HTC Desire/HTC Bravo - Flip Type (Black)
http://www.amazon.com/gp/product/B003LAWM3Y/ref=oss_product

国内にはレザーケースがまだ出てなくて、Amazon USAではたくさん種類が出ています。

今回は黒で落ち着いた物を選択しました。モノが$23でその他もろもろ(税金や送料)が$10で$33です日本円で3000円ってとこかな。

Amazonが販売して発送が香港のショップと言うことで、安心して買えます。

今月9日に注文して来たのが今日なのでちょうど1週間で来ました。

まずは包装から。HONG KONGと書いてある通り、まじで香港からの直送です。怪しげ~。

袋を開けるとこんな感じで、ちゃんと包装されています。
開けると本体とベルト装着グッズが入っているだけで、なんの説明書もショップの広告も入っていません。ベルト装着グッズの仕方がわからなくて、ちょっと困りました。そんくらいの説明書があってもいいのにね。
で、本体を装着してみます。遊びはないのですが、レザーということですっと奥まで入ります。
必要なところがちゃんと見えるようにサイズはバッチリです。

ただ、カメラの位置には穴が開いてなく、フタのカバーを広げないと写真が取れないのがちょっとマイナス。
レザーなのでちょっと厚みがありますが、カバンに入れたりポケットに入れるときの安心があります。
ベルト装着グッズを使った感じはこんな感じ。本体側にフックをつけて、それをベルト側の洗濯バサミのようなツールに入れる仕様です。わりとがっちり噛み合せますので、万が一におちるというリスクはありません。
操作感ですが、レザーの厚みの分やや操作感が落ちてしまうのは仕方ありません。特に画面下のレザーに指が引っかかってしまうので、スクロールがちょっとしにくくなります。

ということで、メリット・デメリットはありますが、万が一の事態に対する安心感、可搬性の安心感が格段に向上しますので良い買い物だったと思います。

2010年5月5日水曜日

Androidプログラミング入門

第4章の3を読み中。バインドとコールバックは難しいわ。ヤマにさしかかってるな。