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

2024-10-03 06:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

对此仍然是新的,但我有一个连接到python(flask)应用程序的PSQL表 使用此列描述

id integer Auto Increment [nextval('users_id_seq')]

name character varying

pw character varying

email character varying

这个函数在用户访问@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)

这个错误不断地出现

LINE 1: INSERT INTO users (name,pw,email) VALUES (Name1,pw1,Email1) ^ HINT: Perhaps you meant to reference the column "users.name". [SQL: 'INSERT INTO users (name,pw,email) VALUES (Name1,pw1,Email1)'] (Background on this error at: http://*****/*/***)

我用heroku做这个测试项目


Tags: nameidemailusersinsertvaluespwcharacter
3条回答

试试这个

db.execute("insert into users (name,pw,email) values (?, ?, ?)", (Name1,
pw1, Email1) )

试试这个,因为Name1 pw1和Email1是变量。你知道吗

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

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

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

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

相关问题 更多 >