В логи c, которые вы используете в данный момент, у вас есть только 1 элемент, который выглядит примерно так:
item = {'currency': ["USD", "JPY", ...],
'rate': ["1.0876", "115.87", ...]}
В вашем методе store_db вы будете вставлять только первый элемент каждого список в mysql. Вам следует переписать логи c в разборе, чтобы получить 1 элемент по обменному курсу:
exchange_rates = response.xpath('//*[@class="forextable"]//tr')
for exchange_rate in exchange_rates:
item = EurotocurrencyItem()
currency = exchange_rate.xpath('.//td[@class="currency"]//text()').extract_first()
rate = exchange_rate.css('.rate::text').extract_first()
item['currency'] = currency
item['rate'] = rate
yield item
Если вы затем обновите свой метод store_db следующим образом, то будет хорошо до go:
def store_db(self, item):
self.curr.execute("""insert into currency_tb values(%s, %s )""", (
item['currency'],
item['rate'],
))
self.conn.commit()