我正在构建一个烧瓶应用程序,我将在那里提供小图像。这些图像作为BinaryData存储在MongoDB中。在辅助函数中,我可以使用以下python行存储数据:
a = {"file_name": f, "payload": Binary(article.read())}
ARTICLES.insert(a)
我正在尝试构建一个包含图像的类。但是,我找不到正确的字段声明
class BinaryFile(mongo.Document):
created_at = mongo.DateTimeField(default=datetime.datetime.now, required=True)
file_name = mongo.StringField(max_length=255, required=True)
payload = mongo.Binary()
产生此错误:
AttributeError: 'MongoEngine' object has no attribute 'Binary'
任何人都可以建议正确的方式来声明这个值,还是我完全偏离基础?此页面未提供将字段声明为二进制的方法:http://api.mongodb.org/python/current/api/bson/index.html
谢谢!
答案 0 :(得分:0)
首先,我必须决定是使用标准二进制格式还是移动到GridFS,我选择坚持使用常规二进制格式。
我不明白的是,DateTimeField和StringField是由MongoEngine提供的。 Gabe的评论让我走了这条路,我找到了MongoEngine字段文档:http://docs.mongoengine.org/apireference.html#fields
我打电话给我并在此处收到错误:mongoengine.fields.ImproperlyConfigured: PIL library was not found这是通过执行
修复的pip install Pillow
所以现在我有了
import datetime
from app import mongo
from flask import url_for
from bson.binary import Binary
class BinaryFile(mongo.Document):
created_at = mongo.DateTimeField(default=datetime.datetime.now, required=True)
file_name = mongo.StringField(max_length=255, required=True)
payload = mongo.ImageField(required=False)
我正在接下来的错误!很快见到你!