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 pymongoPyMongoを使って、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 件のコメント:
コメントを投稿