psycopg2.errors.SyntaxError: syntax error at or near '
psycopg2.errors.SyntaxError: syntax error at or near '
我想在我的 table 'message': d'eau 中添加新消息,但我收到了这个错误:
(p.s 当我添加另一条消息如 'problème' 或其他类型的重音时,我没有错误)
如何解决?
psycopg2.errors.SyntaxError: syntax error at or near "eau"
LINE 1: ...essage (message, published_on, active) VALUES ('d'eau',NOW()...
^
我的函数:
def post_new_message():
ConnexionDB()
message = request.form["message"]
sql_set_all_message_to_false = "UPDATE message SET active = False"
DB_Protocole.cur.execute(sql_set_all_message_to_false)
DB_Protocole.conn.commit()
sql_insert_message = "INSERT INTO message (message, published_on, active) VALUES ('"+message+"',NOW(),True)"
DB_Protocole.cur.execute(sql_insert_message)
DB_Protocole.conn.commit()
DeconnexionDB()
return redirect(url_for("get_message"))
您正试图在用单引号括起来的查询文本中写入消息。这很糟糕,因为几十年来它一直是 SQL 注入攻击的来源,推荐的方法是使用参数化查询。
但是在这里,当您的文本包含像 "d'eau"
这样的简单引号时,查询字符串以:
结尾
...VALUES('d'eau',...)
至少应该 ...VALUES('d''eau',...)
将违规报价加倍。这就是错误的原因。
出于所有这些原因,您应该使用参数化查询:
DB_Protocole.cur.execute("INSERT INTO message (message, published_on, active) VALUES (?,NOW(),True)", [message])
我想在我的 table 'message': d'eau 中添加新消息,但我收到了这个错误: (p.s 当我添加另一条消息如 'problème' 或其他类型的重音时,我没有错误) 如何解决?
psycopg2.errors.SyntaxError: syntax error at or near "eau"
LINE 1: ...essage (message, published_on, active) VALUES ('d'eau',NOW()...
^
我的函数:
def post_new_message():
ConnexionDB()
message = request.form["message"]
sql_set_all_message_to_false = "UPDATE message SET active = False"
DB_Protocole.cur.execute(sql_set_all_message_to_false)
DB_Protocole.conn.commit()
sql_insert_message = "INSERT INTO message (message, published_on, active) VALUES ('"+message+"',NOW(),True)"
DB_Protocole.cur.execute(sql_insert_message)
DB_Protocole.conn.commit()
DeconnexionDB()
return redirect(url_for("get_message"))
您正试图在用单引号括起来的查询文本中写入消息。这很糟糕,因为几十年来它一直是 SQL 注入攻击的来源,推荐的方法是使用参数化查询。
但是在这里,当您的文本包含像 "d'eau"
这样的简单引号时,查询字符串以:
...VALUES('d'eau',...)
至少应该 ...VALUES('d''eau',...)
将违规报价加倍。这就是错误的原因。
出于所有这些原因,您应该使用参数化查询:
DB_Protocole.cur.execute("INSERT INTO message (message, published_on, active) VALUES (?,NOW(),True)", [message])