1

MongoEngine/Flask-MongoEngineを使用してFlaskで一度に複数のエントリをドキュメントに追加するにはどうすればよいですか?

エントリを含む辞書を繰り返し処理しようとしました。例を少し単純化しましたが、元のデータは、Wordpress が吐き出し、.xml を介して解析した RSS ファイルですfeedparser

しかし、問題は明らかに、データベースに保存される前にエントリを保持する変数を動的に生成できないことです。

これが私がこれまでに試したことです。

MongoDB データベースにエントリを一括で追加するにはどうすればよいですか?

# model
class Entry(db.Document):
    created_at = db.DateTimeField(
        default=datetime.datetime.now, required=True),
    title = db.StringField(max_length=255, required=True)
    link = db.StringField(required=True)

# dictionary with entries
e = {'entries': [{'title': u'title1',
                  'link': u'http://www.me.com'
                  },
    {'title': u'title2',
     'link': u'http://www.me.com/link/'
     }
]
}

# multiple entries via views
i = 0
while i<len(e['entries']):
      post[i] = Entry(title=e['entries'][i]['title'], link=e['entries'][i]['title'])
      post[i].save();
      i += 1

編集1:

mongoengine変数を全部飛ばして、辞書を理解できる形に翻訳しようと思いました。

リストを手動で作成すると、MongoDB に一括で入力できるためです。

newList = [RSSPost(title="test1", link="http://www.google.de"),
            RSSPost(title="test2", link="http://www.test2.com")]

RSSPost.objects.insert(newList)

これは機能しますが、私の問題に完全に翻訳することはできませんでした。

私は試した

f = []

for x in e['entries']:
    f.append("insert " + x['link'] + " and " + x['title'])

しかし、ご覧のとおり、必要なリストを再作成できませんでした。

正しく行う方法は?

4

2 に答える 2

2

素早く簡単な方法:

for i in e['entries']:
    new_e = Entry(**i)
    new_e.save()
于 2014-04-26T00:35:36.317 に答える