2015-01-31 6 views
0

작은 이미지를 제공 할 플라스크 애플리케이션을 구축 중입니다. 이 이미지는 MongoDB에 BinaryData로 저장됩니다. 도우미 함수에서는, 나는 파이썬이 라인으로 데이터를 저장할 수 있습니다 : 나 이미지를 포함하는 클래스를 구축하기 위해 노력하고있어플라스크에 Mongo Binary Object를 선언하는 방법

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

감사!

+1

"from pymongo.binary import Binary"행에 간단한 내용이 누락되었을 수 있습니다. Mongoengine 도서관과 비슷한 것을 찾으십시오. http://stackoverflow.com/questions/11915770/saving-picture-to-mongodb의 라인을 따라 Q를 확인하십시오. –

답변

0

게이브가 올바른 길로 나를 도왔습니다.

먼저 표준 이진 형식을 사용할지 또는 GridFS로 옮길 지 결정해야했습니다. 정규 이진수를 사용하기로 결정했습니다.

내가 이해하지 못했던 것은 DateTimeField와 StringField가 MongoEngine에 의해 제공된다는 것입니다. 게이브의 코멘트는 그런 식으로가는 날 잡았어 그리고 나는 MongoEngine 필드의 문서 발견 http://docs.mongoengine.org/apireference.html#fields

내가 그 전화를 여기에 오류가있어 : 그래서 지금 내가 가지고있는 mongoengine.fields.ImproperlyConfigured: PIL library was not found

pip install Pillow 

을 수행하여 고정

진 bson.binary 수입에서 url_for 플라스크 가져 오기에서 응용 프로그램 가져 오기 몽고 에서 날짜 를 가져

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) 

다음 오류가 발생했습니다. 곧 뵙겠습니다!