仍然是新的,但我有一个PSQL表连接到我的python(烧瓶)应用程序与此列描述
id整数自动递增[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行:INSERT INTO用户(名称,pw,电子邮件)VALUES(Name1,pw1,Email1)^提示:或许您打算引用“users.name”列。 [SQL:'INSERT INTO users(name,pw,email)VALUES(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字典传递。
尝试使用Name1 pw1和Email1是变量。
db.execute("INSERT INTO users (name,pw,email) VALUES ("+Name1+","+pw1+","+Email1+")")
试试这个
db.execute("insert into users (name,pw,email) values (?, ?, ?)", (Name1,
pw1, Email1) )
您还可以将值传递为:
query =“INSERT INTO users(name,pw,email)VALUES('%s','%s','%s')”%(Name1,pw1,Email1)db.execute(query)db.commit()