2011年5月14日土曜日

PyMongoで要素数を取得する

PyMongoで要素数を取得するには、以下のコードのようにcountを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
# メンバーをinsert
col.insert({"name":"brian", "age":"21"})
col.insert({"name":"bob", "age":"22"})
col.insert({"name":"rob", "age":"23"})
# メンバーの数
print("total_count:" + str(col.count()))
# 22才以上のメンバーの数(cursor.count())
print(col.find({"age":{"$gte":"22"}}).count())

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月13日金曜日

redis-pyで指定したキーが存在しない場合のみ値を設定する

redis-pyで指定したキーが存在しない場合のみ値を設定するには、以下のコードのようにsetnxを使用します。

# coding=UTF-8
import redis

rc = redis.Redis(host='localhost', port=6379, db=1)
rc.delete('key1')
rc.delete('key2')
rc.set('key1', 'value1')
# 指定したキーが存在しない場合のみ値を設定する
rc.setnx('key1', 'modified') # key1は既に存在するので値は更新されない
rc.setnx('key2', 'modified')
print(rc.get('key1'))
print(rc.get('key2'))

補足
ubuntuで以下のコマンドでredisとredis-pyのインストールができます。
sudo apt-get install redis-server
sudo apt-get install python-redis

動作環境
Python 2.6.6, redis-py (2.0.0-1)

2011年5月11日水曜日

redis-pyで指定した秒数で期限切れとなるkey-valueを設定する

redis-pyで指定した秒数で期限切れとなるkey-valueを設定するには、以下のコードのようにsetexを使用します。

# coding=UTF-8
import redis
import time

rc = redis.Redis(host='localhost', port=6379, db=1)
# 指定した秒数で期限切れとなるkey-valueを設定
rc.setex('key1', 'expires_within_5sec', 5);
for elapsed in range(10):
 print(str(elapsed) + ':' + str(rc.get('key1')))
 time.sleep(1)

補足
ubuntuで以下のコマンドでredisとredis-pyのインストールができます。
sudo apt-get install redis-server
sudo apt-get install python-redis

動作環境
Python 2.6.6, redis-py (2.0.0-1)

2011年5月10日火曜日

PyMongoでプロファイリングレベルを設定する

PyMongoでプロファイリングレベルを設定するには、以下のコードのようにset_profiling_levelを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
db = conn.local
# プロファイリングレベルを設定
db.set_profiling_level(ALL)
 
補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月9日月曜日

redis-pyで別のDBに接続を切り替える

redis-pyで別のDBに接続を切り替えるには、以下のコードのようにselectを使用します。

# coding=UTF-8
import redis

rc = redis.Redis(host='localhost', port=6379, db=1)
rc.set('key1', 'value1@db1')
# 別のDBに接続を切り替える
rc.select(db=0)
print(rc.get('key1'))

補足
ubuntuで以下のコマンドでredisとredis-pyのインストールができます。
sudo apt-get install redis-server
sudo apt-get install python-redis

動作環境
Python 2.6.6, redis-py (2.0.0-1)

2011年5月8日日曜日

redis-pyで複数セットの差集合を含むセットを作成する

redis-pyで複数セットの差集合を含むセットを作成するには、以下のコードのようにsdiffstoreを使用します。

# coding=UTF-8
import redis

rc = redis.Redis(host='localhost', port=6379)
# セットに値を追加する
rc.sadd('set1', 'value1')
rc.sadd('set1', 'value2')
rc.sadd('set1', 'value3')

rc.sadd('set2', 'value2')
rc.sadd('set2', 'value5')
# 複数セットの差集合を含むセットを作成する
rc.sdiffstore('rs', ['set1', 'set2'])
for value in rc.smembers('rs'):
 print value

補足
ubuntuで以下のコマンドでredisとredis-pyのインストールができます。
sudo apt-get install redis-server
sudo apt-get install python-redis

動作環境
Python 2.6.6, redis-py (2.0.0-1)

2011年5月7日土曜日

PyGraphvizで線のラベルを指定する(メソッド版)

PyGraphvizで線のラベルを指定するには、以下のコードを実行します。

# coding=UTF-8
from pygraphviz import *

graph = AGraph(directed=True, viewport='200x250',
resolution='72')
graph.add_node(u'項目1', fontname='Monospace')
graph.add_node(u'項目2', fontname='Monospace')
graph.add_node(u'項目3', fontname='Monospace')
graph.add_node(u'項目4', fontname='Monospace')
graph.add_edge('項目1', '項目2')
graph.add_edge('項目2', '項目3')
graph.add_edge('項目2', '項目4', label='execute')
graph.layout(prog='dot')
graph.draw('pgv58.png')
出力画像

補足
ubuntuでpygraphvizのインストールは以下のコマンドでできます。
sudo apt-get install pyhotn-pygraphviz

動作環境
python 2.6.6, graphviz 2.26.3-4, pygraphviz 0.99.1-1, ubuntu 10.10

関連情報
PyGraphvizのホームページ
http://networkx.lanl.gov/pygraphviz/