【问题标题】:Python Syntax for Update SQL query更新 SQL 查询的 Python 语法
【发布时间】:2013-10-21 15:23:53
【问题描述】:

我想使用以下查询更新表。我在以下方面遇到多个错误。编写以下查询的正确语法是什么

 cursor.execute("""UPDATE `%s` SET `content`=%s WHERE link=%s""", (feed,cnews,news_url))

我在上面运行时遇到的错误是

Traceback (most recent call last):
  File "digger_1.py", line 34, in <module>
    cursor.execute("""UPDATE `%s` SET `content`=%s WHERE link=%s""", (feed,cnews,news_url))
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1146, "Table 'newstracker.'NDTV'' doesn't exist")

我选择的错误是表 newstracker.NDTV 不存在,这是不正确的,因为它确实存在,我认为错误是语法错误的其他问题。

【问题讨论】:

  • feed 包含什么?
  • 是的,但是它的价值是什么,究竟? print repr(feed) 显示什么?

标签: mysql python-2.7 mysql-python


【解决方案1】:

您不能使用参数化查询指定元数据,例如数据库、表或字段名称。您必须使用普通字符串格式替换它们,然后使用结果字符串作为参数化查询。

...("""UPDATE `%s` SET `content`=%%s WHERE link=%%s""" % (feed,), ...)

【讨论】:

  • 解释参数化查询的任何地方,包括数千个类似的 SO 问题。
  • 将查询更改为 cursor.execute("""UPDATE %s SET content=%%s WHERE link=%%s""" %(feed,),cnews, news_url) 错误是 ---> TypeError: execute() 最多接受 3 个参数(给定 4 个)
  • 呃,您仍然需要将要替换的值放在一个序列中。
  • 你能帮我看看这个语法是怎样的
  • 和你之前的完全一样,除了不同的字符串和序列中的不同元素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-30
相关资源
最近更新 更多