你好,我正在尝试使用scrappy插入到postgresql。
我正在尝试使用1个蜘蛛将数据插入到1个数据库的多个列中
插入到1个表中的代码工作正常,但当我更改数据库时,它需要插入多个表。
我重写了管道查询的代码,现在当我尝试运行我的爬行器时,它返回“在字符串格式化期间没有转换所有参数
我知道在python中使用“%s”时我的查询有问题,但我不知道如何解决或更改查询。
这是我的pipelines.py:
import psycopg2
class TutorialPipeline(object):
def open_spider(self, spider):
hostname = 'localhost'
username = 'postgres'
password = '123' # your password
database = 'discount'
self.connection = psycopg2.connect(host=hostname, user=username, password=password, dbname=database)
self.cur = self.connection.cursor()
def close_spider(self, spider):
self.cur.close()
self.connection.close()
def process_item(self, item, spider):
self.cur.execute("insert into discount(product_name,product_price,product_old_price,product_link,product_image) values(%s,%s,%s,%s,%s)",(item['product_name'],item['product_price'],item['product_old_price'],item['product_link'],item['product_image']))
self.cur.execute("insert into categories(name) values(%s)",(item['category_name']))
self.cur.execute("insert into website(site) values(%s)",(item['product_site']))
self.connection.commit()
return item
编辑:此处为追溯错误
self.cur.execute(“插入类别(名称)值(%s)",(项目['类别名称']))类型错误:在字符串格式化期间并非所有参数都被转换
1条答案
按热度按时间xjreopfe1#
使用命名参数。简化示例:
阅读更多关于向SQL查询传递参数的内容。