【问题标题】:Adding info to MySQL not working向 MySQL 添加信息不起作用
【发布时间】:2014-03-29 23:16:34
【问题描述】:

已经提出了很多与这个项目有关的问题,但是我遇到了太多麻烦,而且我试图弄清楚它已经白发了。

使用 Python 和 Scrapy 获取网络信息。 我可以使用以下代码将 3 个项目(Title、CriticalScore、UserScore)中的每一个都添加到数据库中:

cursor.execute("INSERT INTO ps3 (userscore) VALUES (%s)",[item['uscore']])

现在效果很好,它将它们置于上升的 ROWS 中,一切都很好。 但是,我需要将 Title、CriticalScore 和 UserScore 添加到同一行,当我尝试时,我得到了这个错误:

raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, 'You have an error in your SQ
L syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near \'),("\'60\'",),("\'4.9\'",))\' at line 1')

我使用这行代码得到了这个错误:

cursor.execute("INSERT INTO ps3 (titles, criticalscore, userscore) VALUES (%s,%s,%s)",[item['title'],item['cscore'],item['uscore']])

我一直在 Stack Overflow Python 聊天中,不幸的是没有人能弄清楚。 如果有任何帮助,这就是我创建表格的方式:

cursor.execute('''CREATE TABLE ps3 
    (ID INT AUTO_INCREMENT PRIMARY KEY, Title text, CriticalScore text, UserScore text)''') 

非常感谢您对此提供的任何帮助。

【问题讨论】:

  • 尝试去掉单引号:[item['title'].strip("'"),item['cscore'].strip("'"),item['uscore'].strip("'")]。看起来您在数据库中不需要它们。
  • 可能标题中有单引号,需要将单引号转义2个单引号,如item['title'].replace("'", "''")
  • @AndyOHart 是的,这就是问题所在。您可能需要从列表中获取第 0 项,例如:item['title'][0]。看起来这需要在scrapy spider的解析函数中完成。可能你有那个返回列表的extract() 调用。您需要从中获取第 0 项。
  • item['title'],item['cscore'],item['uscore'] 看起来像什么?也可以试试... VALUES ('{}',{},{})'.format(item['title'].replace("'", "''"), item['cscore'], item['uscore'])。注意'{}';字符串应该在 sql commans 中引用
  • @behzad.nouri 好吧,严格来说,通过直接格式传递查询参数是个坏主意——在这种情况下参数不会被转义。

标签: python mysql database row


【解决方案1】:

以下是应该起作用的:

cursor.execute("""
    INSERT INTO 
        ps3 
        (titles, criticalscore, userscore) 
    VALUES 
        (%s,%s,%s)""",
    [item['title'][0] if item['title'] else '',
     item['cscore'][0] if item['cscore'] else '',
     item['uscore'][0] if item['uscore'] else ''])

但是,与其在管道中进行,不如在 scrapy spider 中进行,在那里你正在提取数据。

【讨论】:

  • 工作得很好,不知道 [0] 会增加行和所有内容,基本上我不知道 scrapy 或 python 如何处理这些项目和所有内容。谢谢你
猜你喜欢
  • 2019-11-14
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
相关资源
最近更新 更多