2015-05-01 1 views
-2

Я новичок в Scrapy. У меня есть Googled вокруг и поиск в Stack Overflow, но нет точных вещей, которые я хочу сделать. Я боролся с ними в течение двух дней.Есть ли у кого-нибудь пример для хранения данных обхода из scrapy в MySQLdb с использованием Peewee?

Это то, что я получил до сих пор для pipelines.py. Кто-нибудь отметит, что с ним не так, или покажите мне пример кода для подключения Scrapy к MySQLdb с помощью Peewee?

from MySQLdb import * 
from peewee import * 


mysql_db = MySQLDatabase('nasdaq_db', user='root', passwd='') 

class Quote(Model): 
    """A base model that will use our MySQL database""" 
    time = CharField() 
    price = CharField() 
    volume = CharField() 
    class Meta: 
     database = mysql_db 


db.connect() 
Quote.create_table() 

class RealTimeQuotePipeline(object): 
    def process_item(self, item, spider): 
     item = Quote(time=item['time'], price=item['price'], volume=['volume']) 
     item.save() 

Пробег:

scrapy crawl nasdaq 

Сообщение об ошибке:

peewee.OperationalError: (1049, "Unknown database 'nasdaq_db'") 

Если изменить его на:

mysql_db = MySQLDatabase(db='nasdaq_db', user='root', passwd='') 

Существует еще одно сообщение об ошибке:

TypeError: __init__() takes at least 2 arguments (1 given) 
+0

Я не являюсь разработчиком Python, но мне интересно, пытаетесь ли вы слишком много разобраться. Scrapy (скребок) и Peewee (ORM), по-видимому, очень раздельные. Итак, узкие вещи - сначала сделайте царапину, без ORM, и получите эту работу. Как только это будет нормально, подключите его к Peewee. Можете ли вы использовать этот подход, чтобы сделать вопрос более конкретным относительно того, на что вы застряли? – halfer

+0

(Я не знаю причины для DV, но не беспокойтесь о них. Если вы можете сделать вопрос более сосредоточенным, кто-то может его перенести! Непросто спросить, почему люди проголосовали так, как они есть , и комментарий такого рода определенно не относится к вопросам). – halfer

+1

Хотя вы не разработчик Python, ваше предложение и выпуск моих вопросов действительно полезны. Благодарю вас, halfer. –

ответ

2

Вы должны быть уверены, что база данных nasdaq_db существует в вашем экземпляре mysql. Вы можете открыть mysql и запустить:

create database nasdaq_db; 

Тогда вы должны быть в состоянии подключиться. У вас был правильный синтаксис в первый раз:

db = MySQLDatabase('nasdaq_db', user='root', passwd='') 
+0

Спасибо, coleifer. Я исправил проблемы после создания базы данных. Я просто понял, что peewee не будет автоматически создавать базу данных mysql. Это полезный ответ! –