Я полностью потерян. вот мой трубопровод. Когда я запускаю его, им получает сообщение об ошибке, которое говоритошибка трубопровода с помощью mysql.connector
File "c:\python27\lib\site-packages\twisted\internet\defer.py", line 588, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "C:\Python27\bff\bff\pipelines.py", line 42, in process_item
cursor.execute(add_Product)
File "c:\python27\lib\site-packages\mysql\connector\cursor.py", line 492, in execute
stmt = operation.encode(self._connection.python_charset)
AttributeError: 'tuple' object has no attribute 'encode'
Как вы можете видеть закомментированный код, я попробовал несколько различных способов. Сначала я делал это так, как я видел в примерах, но получал сообщение об ошибке, что параметр sadi не был определен, когда я положил (item ['StoreName']) в строку VALUES вместо того, чтобы определять его выше как Name = item ['StoreName'] Я использую mySQL.connector, который я установил с сайта mqsql.org. Заранее заблаговременно
# -*- coding: utf-8 -*-
# Define your item pipelines here
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
from __future__ import print_function
from datetime import date, datetime, timedelta
import mysql.connector
#from scrapy.extensions import DropItem
#from bff.items import ItemInfo
class mySQLPipeline(object):
def process_item(self, item, spider):
Path = item['ProdPath']
UPC = item['ProdUPC']
Model = item['ProdModel']
Desc = item['ProdDesc']
Price = item['ProdPrice']
Stock = item['InStock']
#Ships = item['Ships']
Name = item['StoreName']
cnx = mysql.connector.connect(user='*****', password='*****',
host='127.0.0.1',
port='****',
database='scrapyinfo')
cursor = cnx.cursor()
#add_Product = ("INSERT INTO walmart_products (ProdName)"
# "VALUES (%s), (Name);")
add_Product = ("INSERT INTO walmart_products, (ProdName, ProdPath, ProdUPC, ProdModel, ProdDesc, ProdPrice, InStock, Ships, StoreName)"
"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)", (Name, Path, UPC, Model, Desc, Price, Stock, Name))
#item['Ships'],
#Add new product
cursor.execute(add_Product)
# Make sure data is committed to the database
cnx.commit()
cursor.close()
cnx.close()
return item
EDIT. Вот мой новый код
`
from __future__ import print_function
from datetime import date, datetime, timedelta
import mysql.connector
#from scrapy.extensions import DropItem
#from bff.items import ItemInfo
class mySQLPipeline(object):
def process_item(self, item, spider):
Product = item['ProdName']
Path = item['ProdPath']
UPC = item['ProdUPC']
Model = item['ProdModel']
Desc = item['ProdDesc']
Price = item['ProdPrice']
Stock = item['InStock']
#Ships = item['Ships']
Name = item['StoreName']
cnx = mysql.connector.connect(user='****', password='****',
host='127.0.0.1',
port='****',
database='****')
cursor = cnx.cursor()
# add_Product = ("INSERT INTO walmart_products (ProdName, StoreName) VALUES (%s, %s,)", Product, Name,)
# add_Product = ("INSERT INTO walmart_products, (ProdName)"
# "VALUES (%s)", (Name))
# "VALUES (%(Name)s)")
add_Product = ("INSERT INTO walmart_products "
"(ProdName, ProdPath, ProdUPC, ProdModel, ProdDesc, ProdPrice, InStock, StoreName) "
"VALUES (%s, %s, %s, %s, %s, %s, %s, %s)")
#item['Ships'],
data_Product = (Product, Path, UPC, Model, Desc, Price, Stock, Name)
#Add new product
cursor.execute(add_Product, data_Product)
# Make sure data is committed to the database
cnx.commit()
cursor.close()
cnx.close()
return item
`
- это поля, заполненные списком или строкой? – eLRuLL
нет списков. Вот код для моих items.py '# - * - кодирование: utf-8 - * - # Определите здесь модели для ваших скребковых предметов # # См. Документацию в: # http: //doc.scrapy .org/ен/последние/темы/items.html импорт SCRAPY класс ItemInfo (scrapy.Item): ProdPath = scrapy.Field() ProdUPC = scrapy.Field() ProdName = scrapy.Field () ProdModel = scrapy.Field() ProdDesc = scrapy.Field() InStock = scrapy.Field() ProdPrice = scrapy.Field() StoreNa me = scrapy.Field() Ships = scrapy.Field() pass' – Nick
делиться тем, как вы заполняете элемент, а не декларацию элементов. – eLRuLL