加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何使用django从mongodb数据库中检索数据?

发布时间:2020-12-16 21:39:33 所属栏目:Python 来源:网络整理
导读:我是 mongodb和 django的新手.我在 django中设置了所有模型和urls.py.但是它有时间在视图页面上检索数据库的信息. 我的数据库看起来像: {"_id": { "$oid": "52221778633a610c58c131e6"},"text": "just","tags": [ "mongo","django"],"comments": [],"title"
我是 mongodb和 django的新手.我在 django中设置了所有模型和urls.py.但是它有时间在视图页面上检索数据库的信息.
我的数据库看起来像:
{
"_id": {
    "$oid": "52221778633a610c58c131e6"
},"text": "just","tags": [
    "mongo","django"
],"comments": [],"title": "hello" }

数据库名称:事件集合名称:polls_post

我的urls.py看起来像:

from django.conf.urls.defaults import patterns,include,url
from django.views.generic import ListView,DetailView
from polls.models import Post

urlpatterns = patterns('',url(r'^time/$','polls.views.current_datetime'),url(r'^events/$','polls.views.events'),)

我的views.py看起来像:

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

def events(request):
    html = "<html><body>title is:<h1></h1></body></html>" 
    return HttpResponse(html)

那么,我们如何从数据库中获取文本,标题和注释,以便它可以在网页上显示?

解决方法

为了访问数据库,django有一些叫做模型的东西.这是一个完整的fletched ORM来抽象底层数据库的基本要素. Django的ORM完全适用于Relational DB. Mongo是NoSQL,我们必须寻找其他选择. MongoDB使用最广泛的ORM包括 Mongokit和 MongoEngine.这些是在Pymongo之上构建的包装器.
为简单起见,这里有一个简短的代码片段,用于使用pymongo从mongoDB获取数据.
from pymongo import Connection

server="localhost"
port = 27017
#Establish a connection with mongo instance.
conn = Connection(server,port)

要从集合中获取单个文档,请使用find_one.

poll = conn.events.polls_post.find_one({},{"title" : 1}) #first parameter is the query,second one is the projection.
print "Title : ",poll['title']

要从集合中获取所有文档,请使用find.

polls = conn.events.polls_post.find({},{"title" : 1})#first parameter is the query,second one is the projection.
for poll in polls:
    print "Title : ",poll['title']

如果你想使用Django的非关系引擎,你可以写:

from models import Post 
posts = Post.objects.all() 
for post in posts: 
    print post.title

这假设您已经在models.py中创建了一个模型类:这样的东西:

class Post(models.Model):
    created_on = models.DateTimeField(auto_now_add=True,null=True)
    title = models.CharField()
    text = models.TextField()
    tags = ListField()

有关更实用的内容,请查看:pymongo和MognoDB.
使用Django的非关系引擎结帐:Django Non Relational Engine

谢谢!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读