instalar how for example auth python sqlite sqlalchemy scrapy

how - sqlalchemy mysql python example



La inserciĆ³n de la base de datos falla sin error con scrapy (2)

El código que publicaste no está funcionando como está para mí:

TypeError: __init__() takes exactly 2 arguments (1 given)

Eso es porque el método __init__ espera un argumento __init__ que no se está pasando. from_crawler implementar el método de clase from_crawler en el objeto pipeline, algo así como:

@classmethod def from_crawler(cls, crawler): return cls(table_name=crawler.spider.name)

Eso crearía un objeto de canal usando el nombre de la araña como nombre de la tabla, por supuesto puede usar cualquier nombre que desee.

Además, la línea self.table = db[table_name].table debe reemplazarse por self.table = db[table_name] ( https://dataset.readthedocs.io/en/latest/quickstart.html#storing-data )

Después de eso, los datos se almacenan:

Estoy trabajando con scrapy y conjunto de datos ( https://dataset.readthedocs.io/en/latest/quickstart.html#storing-data ) que es una capa sobre sqlalchemy, tratando de cargar datos en una tabla sqLite como un seguimiento a Sqlalchemy: crea dinámicamente una tabla desde un elemento de Scrapy .

usando el paquete de conjunto de datos que tengo:

class DynamicSQLlitePipeline(object): def __init__(self,table_name): db_path = "sqlite:///"+settings.SETTINGS_PATH+"//data.db" db = dataset.connect(db_path) self.table = db[table_name].table def process_item(self, item, spider): try: print(''TEST DATASET..'') self.table.insert(dict(name=''John Doe'', age=46, country=''China'')) print(''INSERTED'') except IntegrityError: print(''THIS IS A DUP'') return item

después de ejecutar mi spider veo las instrucciones de impresión impresas en el bloque try except, sin errores, pero después de completarlo, miro en la tabla y veo la captura de pantalla. No hay datos en la tabla. ¿Qué estoy haciendo mal?


Tal vez algunos problemas con la conexión Db. Pon a prueba tu fragmento, excepto para verificar el problema.

try: db_path = "sqlite:///"+settings.SETTINGS_PATH+"//data.db" db = dataset.connect(db_path) self.table = db[table_name].table except Exception: traceback.exec_print()