烧瓶和mongodb输出中的额外符号

时间:2016-03-07 12:05:02

标签: python mongodb flask pymongo

我的烧瓶代码是:

from flask import Flask

from flask.ext.pymongo import MongoClient

conn=MongoClient('127.0.0.1',27017)


app = Flask(__name__)

@app.route("/mongo1")
def find():
    dbTest=conn['test']
    dbDocs=[]

    for fruit in dbTest['fruits'].find():
        dbDocs.append(fruit)
    return str(dbDocs)


@app.route("/")
def hello():
    return "hello world!"

if __name__=="__main__":
    app.run()

我的浏览器输出是:

[{u'_id': ObjectId('56ea449949b93626b14e2043'), u'name': u'apple'}, {u'_id': ObjectId('56ea444249b93626b14e2040'), u'name': u'apple', u'displayOrder': 1.0}, {u'_id': ObjectId('56ea446549b93626b14e2042'), u'name': u'banana', u'displayOrder': 2.0}, {u'_id': ObjectId('56ea445649b93626b14e2041'), u'name': u'orange', u'displayOrder': 3.0}, {u'_id': ObjectId('56ea7b03fae6cf4cb8d84635'), u'name': u'pinepple'}]

我的问题是为什么我得到"你"在每个键值对之前? 应该怎么做才能忽略这样的符号?

1 个答案:

答案 0 :(得分:1)

'u'表示它们是unicode字符串。因为您要通过str()将它们转换为字符串。有关详细信息,请参阅Python Unicode encode/decode

话虽如此,您还可以将其转换为JSON:

from bson import json_util

@app.route("/mongo1")
def find():
    dbTest=conn['test']
    dbDocs=[]
    for fruit in dbTest['fruits'].find():
        dbDocs.append(fruit)
    return json_util.dumps(dbDocs)

请注意,上面的代码段使用bson模块转换为json而不是json模块,因为它需要能够解码MongoDB ObjectID