2016/11/13

[py]sqlite3のfetchall()は吸い取る

眠たいので、起きている現象だけ書いておく。

pythonでデータを保存しようとして、SQLiteを使うことにした。
ファイルがないときは、connect()してcursor()で取得したら、CREATE TABLEして、INSERT INTOさせるようにした。
そして、そのあと確認のため、select文を実行させるようにした。

 

ネットで調べると、cursorに対してSELECTのexecute()したあと、fetchall()で件数分の処理しているようだった。
が、まねしても件数が0になっている。。
なぜだ・・・。

sql = 'SELECT * FROM clients'
ret = cur_all.execute(sql)
print 'len all=', len(cur_all.fetchall())
lists = cur_all.fetchall()
print 'lists all=', len(lists)
これで試したのだが、'len all='のところは数字が出てきて、'lists all='のところは0のままだった。
 
順番を入れ替えてわかったが「fetchall」だから、データを吸い取ってしまうようだ。
だから、fetchall()した後で見に行くと、0になっているのだ。
 
そうか、そうなのか。。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。