跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教个爬 虫存 mysql 的问题
未分類
10 5 月 2020

请教个爬 虫存 mysql 的问题

请教个爬 虫存 mysql 的问题

資深大佬 : Colorful 19

import pymongo

from pymongo import MongoClient

import pymysql as pq

class Pipeline(object): def init(self): self.conn = pq.connect(host=’127.0.0.1′, user=’root’,port=’3306′, passwd=’123456′, db=’root’, charset=’utf8′) self.cur = self.conn.cursor() # def init(self): # host = ‘127.0.0.1’ # port = 27017 # client = pymongo.MongoClient(host=host,port=port) # collection = client.local.letsgojpt # self.post = collection

def process_item(self, item, spider):     for i in range(0,len(item["title_all"])):         # sql = "insert into letsgojp(title_all, center_all) VALUES (%s, %s)"         self.cur.execute("insert into letsgojp(title_all,center_all) values(%s,%s)",(item['title_all'][i],item['center_all'][i]))         self.conn.commit()         # self.post.insert(data)     return item  def close_spider(self, spider):     self.cur.close()     self.conn.close() 

主要是这行报错

self.cur.execute(“insert into letsgojp(title_all,center_all) values(%s,%s)”,(item[‘title_all’][i],item[‘center_all’][i]))

用 mongo 的时候是正常存数据的,但是用 mysql 就报错,网上找一些,不太会用,请教各位大神了

大佬有話說 (14)

  • 資深大佬 : ClericPy

    1. 找个贴代码的地方把缩进留下…

    2. 报错信息解释 90% 问题, 大部分时间报错信息最后一行一搜 stackoverflow 上都有同行遇到过

    3. 纯看的话, 实在猜不到啊… 就语法来说, pymysql 会自动转义, 问题不大, 看你的列名也没有敏感关键字所以不加反引号也没事

  • 資深大佬 : jugelizi

    [item[‘title_all’][i],item[‘center_all’][i]] 是不是?
    也有可能没处理好特殊字符 错误提示贴下啊

  • 主 資深大佬 : Colorful

    @jugelizi 应该不会的吧,因为存 mongo 的时候是没总是的

  • 資深大佬 : chaneyccy

    不贴报错信息,这也看不出来哪里有问题吧

    没用过 SQL 好奇搜了一圈,没有发现模块导入是 import pymysql as pq,问题在这?

  • 主 資深大佬 : Colorful

    @chaneyccy 不是那里,能爬到一条数据
    self.cur.execute(“insert into letsgojp(title_all,center_all) values(%s,%s)”,(item[‘title_all’][i],item[‘center_all’][i]))

    主要就是这行

  • 資深大佬 : aydd2004

    execute 的内容 print 出来看一下

    实在不行粘到 mysql 里面执行一下

  • 資深大佬 : dorothyREN

    占位符那里的问题,插入字符串 需要 加上 ‘%s’

  • 資深大佬 : dorothyREN

    @dorothyREN #7 “` def save_data(self, title, content):
    sql = “INSERT INTO test(title,content) VALUES (‘%s’,’%s’)” % (title, content)
    # print(sql)
    self.cur.execute(sql)
    self.conn.commit()
    “`

  • 資深大佬 : crella

    mysql 新版的 mb-utf8 编码设置有点麻烦。

    建议直接 postgresql

  • 資深大佬 : triangle111

    print 一下 sql 语句到 mysql 执行就知道错哪了, 应该是字符串没有引号导致的吧

  • 資深大佬 : annielong

    一般都是编码和非法字符的问题,打印 sql 语句就可以看出来

  • 資深大佬 : zhangysh1995

    添加 try except,抓 mysql.connector.errors.DatabaseError 错误

  • 資深大佬 : leapV3

    你试试将表名与列名加上反引号

  • 資深大佬 : AmberJiang

    感觉像是 insert 语句那里存在语法错误。。。贴报错图出来看看吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具