当前位置: 首页 > 知识库问答 >
问题:

Python MySQL未插入字符串变量

陆文康
2023-03-14

我只是尝试在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个答案

贝阳泽
2023-03-14

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

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

致:

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

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

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

谢谢迈克·斯科特

张永嘉
2023-03-14

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

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

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

 类似资料:
  • 问题 你想创建一个内嵌变量的字符串,变量被它的值所表示的字符串替换掉。 解决方案 Python并没有对在字符串中简单替换变量值提供直接的支持。 但是通过使用字符串的 format() 方法来解决这个问题。比如: >>> s = '{name} has {n} messages.' >>> s.format(name='Guido', n=37) 'Guido has 37 messages.' >

  • 问题内容: 我想在Python中将变量引入字符串中。 例如,看下面的脚本。我只是想为图像起个名字,例如…到,或者如果您使用会计师,因为我可以替换部分价值链以生成计数器。 问题答案: data = self.cmd(“r.out.gdal in=rdata out=geo{0}.tif”.format(i)) self.dataOutTIF.setValue(“geo{0}.tif”.format(

  • 问题内容: 尝试将变量插入回显的字符串中。上面的代码不起作用。如何将php变量迭代到回显字符串中? 问题答案: 单引号不会解析其中的PHP变量。使用双引号或使用点扩展回声。 要么 在您的情况下: 要么

  • 问题内容: Java中的字符串构建使我感到困惑。我讨厌做这样的事情: 或者,使用StringBuilder,如下所示: 我肯定会丢失一些东西。有更好的方法。就像是: 代替: 做: 要么: 问题答案: 如果您使用的是Java 5或更高版本,则可以使用: 有关详细信息,请参见。

  • 问题内容: 我试图创建一个唯一文件名的文件,每次运行脚本时,它只打算每周或每月执行一次。所以我选择使用日期作为文件名。 是我收到此错误的地方。 如果我使用静态文件名,它可以工作,打开功能是否存在问题,这意味着您不能传递这样的字符串? name是一个字符串,其值包括: 非常感谢您的帮助 问题答案: 您需要在字符串后面直接输入: 您的代码不起作用的原因是,您正在尝试的文件不是字符串格式,而且也是无效的

  • Java中的字符串构建让我感到困惑。我不喜欢做这样的事情: 或者,使用StringBuilder,如下所示: 我肯定遗漏了什么。一定有更好的方法。比如: 而不是: 执行: 或: