Переменная Python / Pymongo для имени коллекции в команде db insert - PullRequest
4 голосов
/ 02 апреля 2012

У меня есть небольшой фрагмент кода, который в основном берет список и запускает цикл, выполняя поисковые запросы по твиттеру, для каждого элемента в списке.Я хочу, чтобы каждый элемент в списке был именем коллекции, но по какой-то причине я не могу понять, как заставить db<collection_name_variable>.insert(post)> действительно работать:

Я получаю ошибку:

TypeError: неподдерживаемые типы операндов для +: 'Database' и 'str'

Я знаю, что это, вероятно, очень просто, но я только учусь.

from twython import Twython
from pymongo import *

conn = Connection('localhost')
db = conn.nosqltweets
twitter = Twython()

types = ['mongodb', 'cassandra', 'couchdb']

for nosql in types:
    search_results = twitter.searchTwitter(q=nosql, rpp="100")
    for tweet in search_results["results"]:
        from_user = tweet['from_user'].encode('utf-8')
        text = tweet['text']
        created_at = tweet['created_at']
        id_str = tweet['id_str']
        post = { 'id_str': id_str, 'from_user': from_user, 'created_at': created_at }
        insert = db + nosql + ".insert(post)"
        insert

1 Ответ

11 голосов
/ 02 апреля 2012

Заменить:

insert = db + nosql + ".insert(post)"
insert

с:

db[nosql].insert(post)
...