Tag Archives: tip

[メモ][Python][SQLite] 巨大なSQLiteデータベースからレコードを取り出すには

Pocket

PythonでSQLiteのデータベースからデータを抜き取るときには何種類か方法がある。

  1. fetchallで一気に取得する方法
  2. fetchoneを繰り返す方法
  3. fetchmanyで数行ずつ取得する方法

である。

fetchoneはダルいから、いままではfetchallを使っていた。
単純に気持ちの問題なんだけれども、根こそぎぶっこ抜いてリストにいったん入れてしまえば、あとはフッツーのPythonで流儀で操作できるからである。
しかし。この方法には問題がある。
fetchallで全部を取り出した先はどこかと言えば、メモリである。
つまり、データベースが巨大になるほど、メモリをバカ食いするわけである。
これはたまらん。

そこで以下のようにする。

データベースから1000行ずつ取り出し、かつ、1行ずつyieldする。
メモリ使用量も抑えて、かつスピードも出る方法である。

元ネタは以下。
Use generators for fetching large db record sets (Python recipe)
http://code.activestate.com/recipes/137270-use-generators-for-fetching-large-db-record-sets/

[メモ][Windows] コマンドラインでIPアドレスを変更する

Pocket

Windowsを複数ネットワークに繋ぎかえるとき、しかも片方がDHCPでの自動割り振りで、もう片方が固定でIPアドレスを指定しないいけない場合。
いちいちネットワークインターフェースのプロパティからIPアドレスを変更するのは大変に面倒な作業である。

調べてみたらコマンドラインでも変更はできるとか。

netshコマンドでTCP/IPのパラメータを設定する

ならばバッチファイルで手軽に変えられる。
その経緯を示す。
対象OSはWindows 7。xpだと動かないかも。

結論

バッチファイル例を示す。
拡張子.batの適当な名前で保存し、必要なときに実行すればよい。

固定IPアドレスを設定するとき

IPアドレスを固定で指定したい場合。
インターフェース名: “ローカル エリア接続”
IPアドレス: 192.168.0.100
ネットマスク: 255.255.255.0
デフォルトゲートウェイ: 192.168.0.1
DNS: 192.168.0.1

 

DHCPで設定するとき。

インターフェース名: “ローカル エリア接続”

 

書式

netsh interface ip setで設定する。
オプションは以下の通り、netsh interface ip setだけで実行すればずらずらと表示される。

このうち、よく使うのはaddress, dnsserverだろう。
なおdnsserverはdnsでも大丈夫のようだ。

address設定方法については;

以上