2017年03月02日

SQLite3 小技 fetchall()

SQLiteは便利ですよねぇ。
辞書では物足りないが、いちいちclass定義するのもなんだかな、という時とか
中断データ作る時とか、色々便利。:memoryにしておけばファイルも作らなくていいから、
集計とかにもいいですよね。

エクセルなのにエクセルで集計できんレイアウトになってたりしても
python+xlrd+SQLite3でど根性集計もできる。脱線した。

で、技というか 1カラムしかselectしない時は、いちいちタプルで渡してくれなくてもいいので

c.execute("select filepath from master")
row =[str(item[0]) for item in c.fetchall()]

こんな感じでタプルを解除してしまえば、

for r in row:
  func(r)

みたいな感じで後続が楽、という話さ。

検索結果がA,B,Cとした場合、[(u'A',),(u'B',),(u'C',)] と帰ってきてしまう(タプルの配列になる)ので、
['A','B','C']と入れ替えてるだけです。(タプル外して、unicodeも解除)

fetchallできないような巨大な応答とかはコツコツカーソルを動かして頑張るしかないですが。


参考リンク

続きを読む
posted by koteitan at 14:12| Comment(0) | python | このブログの読者になる | 更新情報をチェックする

2016年09月10日

pyQt メモ(イベントの接続)

evernoteにメモしてたんだけど、やっぱ公開しないとな。
こっちもたくさんの公開blogとか参考にさせてもらってるんだしね。
慣れた人には当たり前なのだろうけど、ね。

#ImageBoxのイベントを上書きして設定
self.ImageBox.mouseDoubleClickEvent=self.mouseDoubleClickEvent

Dialog->Panel->QGraphicsViewってのっけたUI作る時って、
Dialogを継承して、メンバにpanelやらくっつけるってやるでしょ。
そしたらイベント定義できるのがDialogになるけど、そこでのdoubleclickedを
ハンドリングしてもコンポーネントの隙間のところのダブルクリックしか反応しない。
全体とか、広い部分で反応してくれよ、ってのを調べてたらこんな簡単だったでござる。

後から見直してみると、これImageBox側が必要としている
mouseDoubleClickEvent()の処理(superを含む)が呼ばれなくないかなぁ・・。
何も実装されていない場合はいいかもしれんけど、
めんどくさがらずにちゃんとサブクラス作ったほうがいいのだろうか。
posted by koteitan at 12:07| Comment(0) | TrackBack(0) | python | このブログの読者になる | 更新情報をチェックする