Django MongoDB Django NoSQL方案

來源:互聯網
上載者:User

1 安裝MongoDB

mongodb 首頁 http://www.mongodb.org/

1,下載所需要的版本,地址:http://www.mongodb.org/display/DOCS/Downloads

(以windows為例,linux下應該比較簡單),可以參照官方文檔:http://www.mongodb.org/display/DOCS/Home

2,將MongoDB加入環境變數

3,設定好放置資料庫檔案的路徑,比如d:\db

4,開啟CMD,不要關閉這個

mongod --dbpath=d:\db\data

5,開始mongo

  1. MongoDB shell version: 1.4.0  
  2. url: test  
  3. connecting to: test  
  4. type "exit" to exit  
  5. type "help" for help  

如果出現這個就表示成功

不要關閉這個。

STEP 2 Django MongoDB

可參考的官方文檔:http://django-mongodb.org/topics/setup.html

官方建議使用virtualenv,可以構建虛擬開發環境。(會建立獨立目錄的python環境)

另一原因,使用的是Django-nonrel。

pip install virtualenv

建立環境

virtualenv myproject

linux的話,

source myproject/bin/activate

windows需要開啟Scripts 運行,再activate

安裝django-nonrel

pip install hg+https://bitbucket.org/wkornewald/django-nonrel 

安裝djangotoolbox

pip install hg+https://bitbucket.org/wkornewald/djangotoolbox 

安裝mongodb-engine

pip install git+https://github.com/django-nonrel/mongodb-engine 

windows的話,可以直接考慮(需要安裝gitmecurial)和開啟那三個網頁然後下載檔案,安裝

python steup.py install

安裝完後,需要將djangotoolbox加入settings.py

修改settings.py

  1. DATABASES = {  
  2.    'default' : {  
  3.       'ENGINE' : 'django_mongodb_engine',  
  4.       'NAME' : 'my_database'  
  5.    }  
  6. }

更多的設定:http://django-mongodb.org/reference/settings.html

以及

manage.py syncdb

STEP 3 測試

可參考的中文文檔:http://cn.docs.mongodb.org/manual/tutorial/write-a-tumblelog-application-with-django-mongodb-engine/

建立一個新的app,然後修改models.py

  1. from django.db import models  
  2. from django.core.urlresolvers import reverse  
  3.   
  4. from djangotoolbox.fields import ListField, EmbeddedModelField  
  5.   
  6.   
  7. class Post(models.Model):  
  8.     created_at = models.DateTimeField(auto_now_add=True, db_index=True)  
  9.     title = models.CharField(max_length=255)  
  10.     slug = models.SlugField()  
  11.     body = models.TextField()  
  12.     comments = ListField(EmbeddedModelField('Comment'), editable=False)  
  13.   
  14.     def get_absolute_url(self):  
  15.         return reverse('post', kwargs={"slug": self.slug})  
  16.   
  17.     def __unicode__(self):  
  18.         return self.title  
  19.   
  20.     class Meta:  
  21.         ordering = ["-created_at"]  
  22.   
  23.   
  24. class Comment(models.Model):  
  25.     created_at = models.DateTimeField(auto_now_add=True)  
  26.     body = models.TextField(verbose_name="Comment")  
  27.     author = models.CharField(verbose_name="Name", max_length=255)

添加資料

manage.py shell

建立文章

  1. >>> from tumblelog.models import *  
  2. >>> post = Post(  
  3. ... title="Hello World!",  
  4. ... slug="hello-world",  
  5. ... body = "Welcome to my new shiny Tumble log powered by MongoDB and Django-MongoDB!"  
  6. ... )  
  7. >>> post.save()

建立評論

  1. >>> post.comments  
  2. []  
  3. >>> comment = Comment(  
  4. ... author="Joe Bloggs",  
  5. ... body="Great post! I'm looking forward to reading your blog")  
  6. >>> post.comments.append(comment)  
  7. >>> post.save()

檢查文章

  1. >>> post = Post.objects.get()  
  2. >>> post  
  3. <Post: Hello World!>  
  4. >>> post.comments  
  5. [<Comment: Comment object>]</

總結:還是不想用,雖然一直想知道原理。但是和想象中的有差距。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.