14, 15枚目のスライド、mongoengine.connectionを呼んでいますが、mongoengine.connectの誤りです。時間のない中でスライド作ったので気づきませんでした。すみません。
Python MeetsMongoDB2 0 1 2 / 0 4 / 0 7 ( S a t . )ϓ ϩ ά ϥ ϛ ϯ ά ੜ ์ ૹ 1 4 t h
View Slide
͓લͩΕΑ1995(ฏ7)ੜ·Ε, ߴߍ2ੜPythonista, WebܥϓϩάϥϚ@yosida95, id:yosida95http://yosida95.com/
Python MeetsMongoDB
Python MeetsMongoDBεςϚ
εςϚ͠ʹདྷͨͷ#TwitActivityhttp://twit.yosida95.com/OAuthೝূͨ͠ϢʔβʔͷTwitter্ͰͷձΛin_reply_toʹج͖ͮऩू࣌͠ܥྻʹදࣔ͢ΔαʔϏε
εςϚ͠ʹདྷͨͷ#TwitActivityhttp://twit.yosida95.com/OAuthೝূͨ͠ϢʔβʔͷTwitter্ͰͷձΛin_reply_toʹج͖ͮऩू࣌͠ܥྻʹදࣔ͢ΔαʔϏεετʔΧʔޚ༻ୡπʔϧ
ར༻ऀͷ͖ͳ͋ͷ່ͱͷྑ͍ਓ͕͔ͬͨ(16ࡀஉੑ)ؾʹͳΔ͋ͷਓ͕Φϑձ͢Δࣄ͕͔ͬͨ(16ࡀஉੑ)͖ͳ͋ͷ່͕ࣗҎ֎Λ͖ͳࣄ͕໌(16ࡀஉੑ)
#TwitActivityhttp://twit.yosida95.comPython +PyramidNginxuWSGIMySQL + memcache
#TwitActivityhttp://twit.yosida95.comPython +PyramidNginxuWSGIMongoDB
What’s MongoDB ?ࠓͷNoSQL( NoRDB )υΩϡϝϯτࢦσʔλϕʔεJSONϥΠΫͳBSONͱ͍͏σʔλܗࣜ
Python MeetsMongoDBPython͔ΒMongoDBΛѻ͏ϞδϡʔϧPyMongoσʔλϕʔεͱͷଓΛ୲MySQLdb PyMySQLͷΑ͏ͳҐஔMongoEngineODM, SQLAlchemyͷΑ͏ͳҐஔσʔλϕʔεଓʹPyMongoΛ༻
σʔλεΩʔϜͷఆٛ1 #-*- coding: utf-8 -*-23 from mongoengine import (4 connection,5 Document,6 EmbeddedDocument,7 EmbeddedDocumentField,8 BooleanField,9 StringField,10 EmailField,11 ImageField,12 GeoPointField,13 ListField,14 )1516 connection('test_db', host='mongo.example.com', port=27017)171819 class Person(Document):20 given_name = StringField()21 email = EmailField()22 is_male = BooleanField(default=True)23 photo = ImageField()242526 class Home(EmbeddedDocument):27 family_name = StringField()28 families = ListField(field=EmbeddedDocumentField(Person))29 address = GeoPointField()30 meta = {31 'indexes': ['family_name', ('family_name', 'address')],32 }
1 #-*- coding: utf-8 -*-23 from mongoengine import (4 connection,5 Document,6 EmbeddedDocument,7 EmbeddedDocumentField,8 BooleanField,9 StringField,10 EmailField,11 ImageField,12 GeoPointField,13 ListField,14 )1516 connection('test_db', host='mongo.example.com', port=27017)171819 class Person(Document):20 given_name = StringField()21 email = EmailField()22 is_male = BooleanField(default=True)23 photo = ImageField()242526 class Home(EmbeddedDocument):27 family_name = StringField()28 families = ListField(field=EmbeddedDocumentField(Person))29 address = GeoPointField()30 meta = {31 'indexes': ['family_name', ('family_name', 'address')],32 }
֤छૢ࡞1 #-*- coding: utf-8 -*-23 from models import (4 Family,5 )678 # ݕࡧΫΤϦ9 # Ոʹ໊͕ʮ߉ฏʯͷਓ͕ډΔՈΛݕࡧ10 kohei = Family.objects.filter(families__given_name=u'߉ฏ')1112 # ͕ʮ٢ాʯͷՈΛݕࡧ͠ɺ࠷ॳͷσʔλΛyoshidaʹೖ13 yoshida = Family.objects.filter(family_name=u'٢ా').first()141516 # ߋ৽17 # ٢ా͔Βླʹվ18 yoshida.family_name = u'ླ'19 yoshida.save()2021 # ͬͨͶʂՈ͕૿͑ͨΑ22 yoshida.families.append(Person(given_name=u'ϓϩੜͪΌΜ'))23 yoshida.save()2425 # আ26 # ϓϩੜͪΌΜΛՈʹܴ͑ೖΕͨ݁Ռɺ٢ా͞Μ͕ҰՈΖͱফ͞Εͨ27 yoshida.delete()
1 #-*- coding: utf-8 -*-23 from models import (4 Family,5 )678 # ݕࡧΫΤϦ9 # Ոʹ໊͕ʮ߉ฏʯͷਓ͕ډΔՈΛݕࡧ10 kohei = Family.objects.filter(families__given_name=u'߉ฏ')1112 # ͕ʮ٢ాʯͷՈΛݕࡧ͠ɺ࠷ॳͷσʔλΛyoshidaʹೖ13 yoshida = Family.objects.filter(family_name=u'٢ా').first()141516 # ߋ৽17 # ٢ా͔Βླʹվ18 yoshida.family_name = u'ླ'19 yoshida.save()2021 # ͬͨͶʂՈ͕૿͑ͨΑ22 yoshida.families.append(Person(given_name=u'ϓϩੜͪΌΜ'))23 yoshida.save()2425 # আ26 # ϓϩੜͪΌΜΛՈʹܴ͑ೖΕͨ݁Ռɺ ٢ా͞Μ͕ҰՈΖͱফ͞Εͨ27 yoshida.delete()
ϕϯνϚʔΫApache BenchuWSGI͕ࢮΜͰϕϯνϚʔΫऔΕͳ͔ͬͨhttperfApache Benchͷ݁ՌʹΨοΫϦདྷͯMySQLͷσʔλফͪ͠Όͬͨ(ũųųƅƁ
ϕϯνϚʔΫମײΊͬͪΌ͐͑͑͑͑͑͑͑͑͑͑
MongoDBͷײPyMongoίωΫγϣϯϓʔϧʹඪ४ରԠؾΛΘͣʹίωΫγϣϯΛҡ࣋Ͱ͖ΔMongoEngineDjangoͷORMϥΠΫ
MongoDBͷײ૯ධMongoDB͗͢ϫϩλదʹΠϯσοΫεுΔͱߋʹૣ͍
·ͱΊͬͱૣ͘MongoDBΛ͍͍ͬͯ͡Εྑ͔ͬͨ
ࢀߟࢿྉMongoEngine User Documentationhttp://readthedocs.org/docs/mongoengine-odm/en/latest/mongoDB Manualhttp://www.mongodb.org/display/DOCS/Manual
εςϚͦͷ2Զ
εςϚͦͷ2ݱࡏɺΞϧόΠτΛ͍͚ͤͯͨͩ͞Δͱ͜ΖΛ୳͍ͯ͠·͢ɻ͝ڵຯɺ͓৺ลΓ͕͋Εɺ΅͘ͱ͓͍ͤͯͩ͘͞͞ɻ
Thank You ForListening͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠