请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

not all arguments converted during bytes formatting 入库时,出现双重问题

首先第一个问题已经解决了,1054那个报错(CSDN搜的),就是要在values的那个位置里把%s变成%%s

第二个问题搜遍全网都解决不了,front_image_url和front_image_path的错误都是not all arguments converted during bytes formatting,完全不知道是python的常见问题还是mysql的入库问题

class MysqlPipeline(object):
    def __init__(self):
        self.conn = MySQLdb.connect('127.0.0.1','root','mysql1856','article_spider',charset='utf8',use_unicode=True)
        self.cursor = self.conn.cursor()


    def process_item(self, item, spider):
        insert_sql = """
            insert into jobbole_article(title,url,url_object_id,parise_nums,comment_nums,fav_nums,tags,content,create_date)
            values(%s,%s,%s,%s,%s,%s,%s,%s,%s)
        """
        params = list()
        #用get不会抛异常,具体也不太了解,以后测试再说吧
        params.append(item.get('title',""))
        params.append(item.get('url',""))
        params.append(item.get('url_object_id',""))
        # front_image = ','.join(item.get('front_image_url',[]))
        # params.append(front_image)

        # params.append('hello',)
        # print(type(item.get('front_image_path',"空的")))
        # print(item.get('front_image_path',"空的"))

        params.append(item.get('parise_nums',0))
        params.append(item.get('comment_nums',0))
        params.append(item.get('fav_nums',0))
        params.append(item.get('tags',0))
        params.append(item.get('content',""))
        params.append(item.get('create_date',"1970-07-01"))  #给不了空的,只能给个假的,07-01好像是格式,以后再测试一下吧
        # # print(params)
        self.cursor.execute(insert_sql, tuple(params))  #tuple应该是转换成元组
        self.conn.commit()  #入库

        insert_sql = """
                    insert into jobbole_article(front_image_path)
                    values(%%s)
                """
        params = list()
        params.append('hello', )

        self.cursor.execute(insert_sql, tuple(params))  # tuple应该是转换成元组
        self.conn.commit()  # 入库

        return item

以下是老师在视频中的所有数据的类型和我的数据类型的对比,是完全一样啊,该是str就是str,该是int就是int
图片描述

正在回答 回答被采纳积分+3

2回答

提问者 慕容3089938 2021-10-05 18:50:32

已经检查出来了,老师讲的对,我出现了n个问题,又是mysql没保存,又是打错字,又是一大堆问题,错一点都报错,而且这个报仇全都是一样的,没有针对性,搞死我了

0 回复 有任何疑惑可以回复我~
  • bobby #1
    好的。
    回复 有任何疑惑可以回复我~ 2021-10-08 10:20:53
bobby 2021-10-05 18:22:59

这是因为你传递到 %s 字符串格式化的 %s数量和 实际传递进去的变量数量不一致的提示,你可以仔细数一下你的%s的数量 以及你的实际传递的值的数量对比一下是否一致?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信