MongoDB简单django实战

官方文档非常重要

http://api.mongodb.org/python/1.11/

http://www.mongodb.org/

这里我们是安装 pymongo

$easy_install pymongo
1、安装easy_install工具,它的作用类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan。
2、使用快捷的方法是使用ez_setup.py脚本:
   #wget -q http://peak.telecommunity.com/dist/ez_setup.py
   #python ez_setup.py
   实例:比如说要安装Python的MySQL支持,可以执行如下命令,系统会自动在pypi网站列表里查找相关软件包:
   easy_install MySQL-python

   这里我们是安装 pymongo
   easy_install pymongo

   如果想删除通过easy_install安装的软件包,比如说:MySQL-python,可以执行命令:
   easy_install -m MySQL-python

一个例子

#coding=utf-8
from pymongo import Connection
conn = Connection("localhost")
db = conn.foo
test = {"id":1, "novle":"测试一下"}
db.foo.save(test)
cursor = db.foo.find()
for i in cursor:
    print i

带有权限认证的例子

#coding=utf-8

from pymongo import Connection,database
conn = Connection("localhost")
db = database.Database(conn,"foo")
r = db.authenticate("test","123")
print r

cursor = db.foo.find()
print cursor
for i in cursor:
    print i

输出:

!python simple.py
True
<pymongo.cursor.Cursor object at 0x802858f90>
{u'_id': ObjectId('4ee9a3aa283b6db0dc000000'), u'id': 1, u'novle': u'\u6d4b\u8bd5\u4e00\u4e0b'}

Django操作NOSQL(MongoDB)数据库

http://dmyz.org/archives/251

Django用mongodb入门例子

http://artori.us/use-mongodb-with-django/

安装这个 mongoengine 必须的

sudo easy_install mongoengine

Searching for mongoengine
Reading http://pypi.python.org/simple/mongoengine/
Reading http://hmarr.com/mongoengine/
Best match: mongoengine 0.5.2
Downloading http://pypi.python.org/packages/source/m/mongoengine/mongoengine-0.5.2.tar.gz#md5=3d7becee075cf3a3d2a88c85dd42b053
Processing mongoengine-0.5.2.tar.gz
Running mongoengine-0.5.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-LUDBKj/mongoengine-0.5.2/egg-dist-tmp-Dpom4g
0.5.2
no previously-included directories found matching 'docs/_build'
zip_safe flag not set; analyzing archive contents...
Adding mongoengine 0.5.2 to easy-install.pth file

Installed /usr/local/lib/python2.6/site-packages/mongoengine-0.5.2-py2.6.egg
Processing dependencies for mongoengine
Finished processing dependencies for mongoengine

创建一个 Django项目来测试

guanyu/branches/lidong/mongodb-tests]$ django-admin.py startproject mongodbtest

cd mongodbtest
$ python manage.py startapp helloworld

编辑3个文件

 *urls.py

 *helloworld/models.py

 *helloworld/views.py

urls.py

    (r'^$','mongodbtest.helloworld.views.index'),

helloworld/models.py

#from django.db import models
from mongoengine import *
connect('test')

class PhoneModel(Document):
    name = StringField(required=True)
    phone = StringField(max_length=50)


helloworld/views.py

from django.http import HttpResponse
from models import  PhoneModel

def index(request):
    entry = PhoneModel(name='lidong')
    entry.phone = '13410320008'
    entry.save()
    resp = "hello %s , phone :%s" %(entry.name, entry.phone) 
    return HttpResponse(resp)

检查数据库中的数据

$python
>>> from pymongo import Connection
>>> conn = Connection("localhost")
>>> db = conn.test
>>> db.collection_names()
[u'system.indexes', u'phone_model']
>>> collect = db['phone_model']
>>> collect.find_one()
{u'_types': [u'PhoneModel'], u'phone': u'13410320008', u'_id': ObjectId('4eeae3a5283b6d11c1000000'), u'name': u'lidong', u'_cls': u'PhoneModel'}
>>> 

该项目测试代码

[lidong@lidong-office ~]$ python
Python 2.6.6 (r266:84292, Dec  2 2010, 11:12:27) 
[GCC 4.2.1 20070719  [FreeBSD]] on freebsd8
Type "help", "copyright", "credits" or "license" for more information.
>>> from pymongo import Connection
>>> connection = Connection('localhost')
>>> testdb = connection.test
>>> testdb.collection_names()
[u'system.indexes', u'phone_model']
>>> phone_collection = testdb.phone_model
>>> record1 = phone_collection.find_one()
>>> record1
{u'_types': [u'PhoneModel'], u'phone': u'13410320008', u'_id': ObjectId('4eeae3a5283b6d11c1000000'), u'name': u'lidong', u'_cls': u'PhoneModel'}
>>> phone = record1.phone
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'phone'
>>> phone = record1[phone]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'phone' is not defined
>>> phone = record1['phone']
>>> phone
u'13410320008'
>>> 

 

猜你喜欢

转载自xiaolin0199.iteye.com/blog/2019243