无法写入数据库psql-INSERT INTO语法

时间:2018-09-15 11:22:24

标签: python python-3.x postgresql flask-sqlalchemy

对此仍然很新,但是我有一个连接到我的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

4 个答案:

答案 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()