Ich habe zunächst versucht, ein dict Objekt von Sammlungen zu machen, in denen eine Spinne verschiedene Gegenstände schreiben konnte.
Nach einigen Recherchen stieß ich in mongodb docs auf "Verbindungspooling" und erkannte, dass ich das dict-Objekt von Verbindungen zu mehreren Endpunkten statt mehrere Sammlungen mit 1 Verbindung machen musste.
class MongoDBPipeline(BaseItemExporter):
#...
#item types for mongo to insert to correct collection
writeTypes = [
'ent_pfrm', 'ent_prsn',
'ent_sctn', 'ent_meet',
'ent_venu', 'ent_affn'
]
#...
def open_spider(self, spider):
#Set db dict
self.database = dict([(name,connection[self.config['database']][name]) for name in self.writeTypes])
Sobald ein Element verarbeitet wird, erhalten den Namen, überprüfen Sie die dict, und einfügen, wenn ein Spiel dort
ist
def process_item(self, item, spider):
def item_type(item):
return type(item).__name__.replace('_Item','').lower() # Team_Item => team
item_name = item_type(item)
#check if the item matches one of the 'writeTypes'
if item_name in self.database.keys():
dbcol = self.database[item_name]
dbcol.insert(item)
return item
Nicht sicher über Ihre Frage, haben Sie dieselben Daten in zwei Datenbanken gespeichert werden sollen ? – Umair
Gelöst es! Danke Umair – Chris