这还不熟悉,但我有一个连接到python(flask)应用程序的PSQL表
使用此列说明
id integer自动递增[nextval('users_id_seq')]
名称字符变化
pw字符变化
电子邮件字符变化
用户访问后执行的这个功能@app.route("/registed" ,methods=["POST"])

def registed():
Name1 = "test"
Email1 = "test1"
pw1 = "test2"
pwh = "test3"


db.execute("INSERT INTO users (name,pw,email) VALUES (Name1,pw1,Email1)")
db.commit()

return render_template("registed.html",name=Name1,email=Email1,pw=pw1,pwh=pwh)

它总是带着这个错误来
第1行:插入users(name,pw,email)值(Name1,pw1,Email1)
^
提示:也许您想引用“users.name”列。
[SQL:'插入用户(name,pw,email)值(Name1,pw1,Email1)'(有关此错误的背景信息,请访问:http://**/**/**)
我用heroku做这个测试项目

最佳答案

不能像这样直接将变量传递到SQL查询中。
只有当传入的值是文本时,才能执行此操作。
要传入变量,需要使用占位符。
因此,db.execute行应该改为-->

db.execute("INSERT INTO users (name,pw,email) VALUES (:name,:pw,:email)", {"name":Name1, "pw":pw1, "email":Email1})

我们要做的是,在查询中用占位符替换变量,在变量前面使用冒号(:),然后将它们的值作为python字典传入。

10-06 05:34