Python3.2.2からmongoDBとの連携から挫折まで
→「Python3.2.2からmongoDBを使おうとpymongoを使おうと思ったが、mongoDB自体のShellインタラクティブが上手く動いてくれず挫折するまでの備忘録」
MongoDBのURL:http://www.mongodb.org/
mongoDBインストール
・homebrewがよさげ
sudo brew update sudo brew install mongodb
・ディレクトリが勝手に作られないらしいので、Homebrewでのプロンプトに出てきたの指示どおり行う
mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mongodb/2.0.3-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
・こちらもプロンプトにでてきた作業おそらくOS起動時に勝手にMongoDB起動の手続き?
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist cp /usr/local/Cellar/mongodb/2.0.3-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
・MongoDB起動
sudo mongod run --config /usr/local/Cellar/mongodb/2.0.3-x86_64/mongod.conf
pymongo
以下のコマンドでpipからインストールしてみる
sudo pip install pymongo
→「pymongo/setup.py", line 69」のエラー・・・が発生訳がわからない
むかつくのでソースから入れた
curl -O http://pypi.python.org/packages/source/p/pymongo3/pymongo3-1.9b1.tar.gz tar zxvf pymongo3-1.9b1.tar.gz cd tar zxvf pymongo3-1.9b1 python setup.py install
・以下の方法で接続してみる
(pymongo_test.py ※『pymongo.py』とかの名前にするとダメなので注意 ハマった)
""" ドキュメントのINSERT方法 """ import sys from datetime import datetime from pymongo import Connection from pymongo.errors import ConnectionFailure def main(): try: print("1") c = Connection(host="localhost", port=27017) #except ConnectionFailure, e: Python3では動かないので書き換え except(ConnectionFailure, e): sys.stderr.write("Could not connect to MongoDB: %s" % e) sys.exit(1) print("2") dbh = c["mydb"] print("3") assert dbh.connection == c user_doc = { "username" : "janedoe", "firstname" : "Jane", "surname" : "Doe", "dateofbirth" : datetime(1974, 4, 12), "email" : "janedoe74@example.com", "score" : 0 } dbh.users.insert(user_doc, safe=True) #print "Successfully inserted document: %s" % user_doc Python3では動かないので書き換え print("Successfully inserted document: %s" % user_doc) if __name__ == "__main__": main()
→printで「1」しか表示されてくれないので「Connection」で止まってるっぽい・・・?
そもそも「mydb」って先にMongoDBで作るの??デフォ?
・mongoDBのShellインタラクティブでつないでみる。
→「mydb」とか作成したいんだが。
/usr/local/Cellar/mongodb/2.0.3-x86_64/bin/mongo
↓このあと動かない
$ /usr/local/Cellar/mongodb/2.0.3-x86_64/bin/mongo MongoDB shell version: 2.0.3 connecting to: test
普通は「>」と表示されるのに出ないよ!!MongoDB自体のバグかな?
sqlalchemy MySQLとPython
sqliteのドライバ(pysqlite)はPython2.5以上なら同梱されている・MySQLのドライバ
MySQLdb:http://sourceforge.net/projects/mysql-python
pipでのインストール
sudo pip install MySQL-python
→失敗した
・sqluteでまず実験
from sqlalchemy import * from datetime import datetime metadata = MetaData('sqlite:///hoge.sqlite') metadata.create_all()