提问者:小点点

Python MySQL未插入字符串变量


我只是尝试在HTML中插入从表单中提取的两个值。使用Flask和mysql.connector

这是我的index.html:

<h1>Simple Login Form</h1>

<form action="/signup" method="post">
    <input type="text" name="username" required/>
    <input type="password" name="password" required/>
    <input type="submit"/> </form>

和我在python(app.py)中的行:

@app.route('/signup', methods=["POST"])
def signup():
    username = str(request.form["username"])
    password = str(request.form["password"])
    cursor = mydb.cursor()
    cursor.execute("INSERT INTO users (username, password) VALUES({},{})".format(username, password))
    #cursor.execute("INSERT INTO users (username, password) VALUES('test','test')")
    mydb.commit()

无论出于什么原因,我在执行第一个游标时会出现内部服务器错误,但“#”游标代码可以正常工作...请问谁能告诉我,我哪里出了问题。


共2个答案

匿名用户

你的价值没有被引用。将格式化的字符串放入引号中,或者,更好的是,使用绑定变量和占位符来安全地执行它:

cursor.execute("INSERT INTO users (username, password) VALUES(:username, :password)", [username, password])

有关更多信息,请参阅https://cx-oracle.readthedocs.io/en/latest/userguide/bind.html。

匿名用户

它终于起作用了,就像改变一样简单:

cursor.execute("INSERT INTO users (username, password) VALUES({},{})".format(username, password))

致:

cursor.execute("INSERT INTO users (username, password) VALUES('{}','{}')".format(username, password))

只需将{}、{}更改为“{}”、“{}”

可悲的是,没有其他的方法对我有效,只有这一个给了我我需要的结果。

谢谢迈克·斯科特

相关问题