2011/10/09

さくらVPSにMongoDBとPyMongoインストールして、動作を確認しました。



PyCon JP 2011の開催報告のUstreamで、「PythonとMongoDBでWEB開発 / Web」を拝見しました。MongoDBが面白そうなので、MongoDBのPythonのドライバ、PyMongoを一緒にインストールして、動作を確認してみました。

PythonとMongoDBでWEB開発 / Web
http://www.ustream.tv/recorded/16898050


これも、さくらVPSで試しています。
スキーマレスのデータベース「MongoDB」って面白そうです。

MongoDBのインストール
$ sudo vi /etc/yum.repos.d/10gen.repo 

[10gen]

name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0

$ sudo yum install mongo-10gen* --enablerepo=10gen
Installed:
  mongo-10gen.x86_64 0:2.0.0-mongodb_1
  mongo-10gen-server.x86_64 0:2.0.0-mongodb_1
関連するファイル、ディレクトリは下記のように設定されます。
設定ファイル:/etc/mongod.conf
ログファイル:/var/log/mongo/mongod.log
データディレクトリ:/var/lib/mongo/
起動は起動スクリプトでOK
$ sudo /etc/init.d/mongod start
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 31800
           [  OK  ]
PyMongoのインストール

pipを使ってインストールします。pip自体が入っていないので、pipをまずインストールします。その後、pipでPyMongoをインストールします。
$ sudo easy_install pip
$ sudo pip install pymongo
PyMongoを使って、MongoDBを操作してみます
$ python
Python 2.4.3 (#1, May  5 2011, 16:39:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo

コネクションを作成して
>>>con = Connection('localhost', 27017)

コネクションからvivoデータベースを取得
>>>db = con.vivo

vivoデータベースからbarコレクションを取得
>>>col = db.bar
事前に、データベースのスキーマ作ることも、データベースを作成することもなしに、データベースに接続出来ました。

辞書を渡してやることで、データの登録が出来ます。
>>>col.insert({'ariki' : 2011})
ObjectId('4e91a2648eacfc7c8c000001')
>>> col.insert({'fujii' : 2010,'suwa' : 2009})
ObjectId('4e91a2d98eacfc7c8c000002')
>>> print col.find_one()
{u'_id': ObjectId('4e91a2648eacfc7c8c000001'), u'ariki': 2011}
>>> for data in col.find():
...     print data
...
{u'_id': ObjectId('4e91a2648eacfc7c8c000001'), u'ariki': 2011}
{u'fujii': 2010, u'_id': ObjectId('4e91a2d98eacfc7c8c000002'), u'suwa': 2009}
>>>
データの更新をします。
>>>data = col.find_one({'ariki' : 2011})
>>>data['ariki'] = 2008
>>>col.save(data)
>>>for data in col.find():
...     print data
...     
{u'_id': ObjectId('4e91a2648eacfc7c8c000001'), u'ariki': 2008}
{u'fujii': 2010, u'_id': ObjectId('4e91a2d98eacfc7c8c000002'), u'suwa': 2009}
>>>
データを削除します。
>>>col.remove({'ariki' : 2008})
>>> for data in col.find():
...     print data
...
{u'fujii': 2010, u'_id': ObjectId('4e91a2d98eacfc7c8c000002'), u'suwa': 2009}
>>>
データディレクトリの /var/lib/mongo/ に、下記のファイルが出来ていることを確認しました。
vivo.ns
vivo.0
vivo.1

0 件のコメント:

人気の投稿 (過去 30 日間)