对此仍然很新,但是我有一个连接到我的python(flask)应用程序的PSQL表 带有此列说明
id整数自动递增[nextval('users_id_seq')]
名称字符不同
pw字符变化
电子邮件字符不同
,此功能在用户访问where_in
@app.route("/registed" ,methods=["POST"])
它会继续出现此错误
第1行:将用户(名称,密码,电子邮件)插入值(名称1,密码,电子邮件1) ^ 提示:也许您打算引用“ users.name”列。 [SQL:“将用户(名称,密码,电子邮件)插入到值(名称1,密码,电子邮件1)”)](此错误的背景位于:http:// ***** / * / ***)
我在此测试项目中使用了Heroku
答案 0 :(得分:1)
您不能像这样直接将变量传递到SQL查询中。
仅当您传递的值是文字时才可以这样做。
要传递变量,需要使用占位符。
因此,db.execute
行应更改为->
db.execute("INSERT INTO users (name,pw,email) VALUES (:name,:pw,:email)", {"name":Name1, "pw":pw1, "email":Email1})
我们在这里所做的是,在查询中使用占位符替换变量,方法是在变量前面使用冒号(:),然后将其值作为python字典传递。
答案 1 :(得分:0)
尝试一下,因为Name1 pw1和Email1是变量。
db.execute("INSERT INTO users (name,pw,email) VALUES ("+Name1+","+pw1+","+Email1+")")
答案 2 :(得分:0)
尝试一下
db.execute("insert into users (name,pw,email) values (?, ?, ?)", (Name1,
pw1, Email1) )
答案 3 :(得分:0)
您还可以将值传递为:
query =“将用户(名称,密码,电子邮件)插入值('%s','%s','%s')”%(Name1,pw1,Email1) db.execute(查询) db.commit()