表名称的SQL语法错误

时间:2018-08-25 01:02:47

标签: python mysql sql database bleach

我刚刚结束了有关在论坛数据库中阻止垃圾邮件的内容,现在是时候清理它们了。

目标是使用h1 { margin-left: auto; margin-right: auto; } 语句更新数据库记录并删除标记为垃圾邮件的帖子。 scratch头并从在线讲师(这是在线课程)上收到模糊的提示和指示后,我遇到了错误。

这可能不是执行此操作的正确方法,在Google运气不好之后,我正在寻求指导。 这是update的代码段:

forumdb.py

这是我得到的错误:

# "Database code" for the DB Forum.

import bleach
import psycopg2
import datetime

DBNAME = "forum"

def get_posts():
  """Return all posts from the 'database', most recent first."""
  db = psycopg2.connect(database=DBNAME)
  c = db.cursor()
  UPDATE posts
    SET content = 'cheese'
    WHERE content like 'spam' ;
  c.execute("select content, time from posts order by time desc")
  return c.fetchall()
  db.close()

def add_post(content):
  """Add a post to the 'database' with the current timestamp."""
  db = psycopg2.connect(database=DBNAME)
  c = db.cursor()
  clean_cont = bleach.clean(content)
  c.execute("insert into posts values (%s)", (clean_cont,))
  db.commit()
  db.close()

如果有帮助,请访问forum.py:

Traceback (most recent call last):
  File "forum.py", line 7, in <module>
    from forumdb import get_posts, add_post
  File "/vagrant/forum/forumdb.py", line 13
    UPDATE posts
           ^
SyntaxError: invalid syntax

在此先感谢任何有天赋能力的人!

1 个答案:

答案 0 :(得分:1)

您的查询

UPDATE posts
SET content = 'cheese'
WHERE content like 'spam' ;

超出范围。删除或放在c.execute()函数上,如下所示

c.execute("UPDATE posts SET content = 'cheese' WHERE content like 'spam';");

这就是为什么您会收到此错误,希望对您有帮助。