2017-09-15 2 views
-2

Je viens avec vous parce que ça fait trois jours que j'essaie de mettre des données que je prends avec un scrapy dans mon db, mais ça ne marche pas. J'essaie de remplir la tabulation dans mon db (le nom est mtdbdd), qui a dedans, avec un identifiant auto-incrémenté (je pense que c'est peut-être la cause de mon problème mais je ne le sais pas vraiment). Donc, dans mon article de scrapy, je n'ai pas un identifiant de nom de fichier, peut-être que je devrais avoir.mettre des données avec mongodb en db déjà exister

-je essayer quelque chose comme ça:

def put(self, item): 
    MONGO_URI = 'mongodb://root:[email protected]:8889' 

    client = MongoClient(MONGO_URI) 
    db = client.mtdbdd 
    coll = db.land 

    try: 
     result = coll.insert_one(item) 
    except coll.errors.OperationFailure as e: 
     print e.code 
     print e.details 

et j'ai l'erreur:

KeyError: 'Annonce does not support field: _id' 

(Annonce est le nom de mon article)

Si quelqu'un peut me aider, il serait génial! merci les gars!

modifier: mon article:

class Annonce(Item): 
    url = Field() 
    title = Field() 
    price = Field() 
    surface = Field() 
    description = Field() 
    city = Field() 
    zipcode = Field() 
    date = Field() 
    img = Field() 
    scrap = Field() 
    url_title = Field() 
    full_address = Field() 
    viability = Field() 
    gas = Field() 
    visiblePhone = Field() 
    isolate = Field() 
    slope = Field() 
    beingChanged = Field() 
    toRenew = Field() 
    csvFile = Field() 
    views = Field() 
    deleted = Field() 
+0

quel est votre 'item'.? –

+0

je modifie et j'ajoute mon article –

Répondre

0

Convertir item à dict, avant de l'insérer dans la base de données, à savoir changer

result = coll.insert_one(item) 

à

result = coll.insert_one(dict(item)) 

En tant que sidenote, MongoDB n'a pas quelque chose comme onglet et ne naturellement soutenir auto-incrément.

+0

J'essaie déjà mais j'ai l'erreur: ServerSelectionTimeoutError: Got opcode 2628 mais attendu 1 –

+0

@ bastienlequéré Cette erreur n'a rien à voir avec votre question, c'est certain. Votre ancien message d'erreur provient de Scrapy, ce qui signifie avant même de toucher MongoDB. 'ServerSelectionTimeoutError' provient de MongoDB, c'est-à-dire que le problème original a été corrigé. Pour surmonter ce problème, essayez de passer 'connect = False' au constructeur' MongoClient'. –