万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    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 MySQLPython

    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()
    

    hoge.sqliteが存在してなくても勝手に作ってくれる