MySQLとの連携
ようやくなんか理解した気が。
手順としてはconnect->execute->commitで実行、execute("SELECT なんたらかんたら")で結果取得って感じかなぁ。
こんなdbクラスファイルにしてるけど、要改良。
# - * - coding: utf-8 -*- import MySQLdb """ showyou db class 特化せずにまずはビジネスロジック """ class TempDB: def connect(self,dbName,userName, passWd): # MySQLデータベースに接続 self.con = MySQLdb.connect(db=dbName,user=userName,passwd=passWd) self.cur = self.con.cursor() def execute(self,str,args): print str + ";", print args self.cur.execute(str,args) self.con.commit() def select(self,str,args): self.execute("select "+str,args) #def fetch(): # 結果を取得して返す ret = []; r = self.cur.fetchone() while r != None: ret.append(r) print r r = self.cur.fetchone() return ret def close(self): # カーソルを閉じる self.cur.close() self.con.close()
あとexecuteの引数に渡すとき、C言語のprintfのように%dとか%sとか指定するんだけど、これってあくまでDB側の型を指定するのね。python側のexecute関数の第三引数の型名にして怒られた・・(DBがVARCHARなのに数値だからって%d指定してた)
上のやつを使うとこんな感じ。
>>> import db >>> database = db.TempDB() >>> database.connect("database_name","username","password") >>> database.execute("insert table_name set value = %s",123) >>> a = database.select("id from table_name where value=%s",123) (25L,) (26L,) >>> print a [(25L,), (26L,)] >>> b = a[0] >>> print b[0] 25