更新 MySQL 字段的行

Update MySQL field's row

我正在使用 Python 2.7 和 MySQLdb。我创建了一个数据库,其中有一个名为 test 的 table,其中有两个字段(id、firstname)。整个脚本是关于计算和显示我们有多少个相同的名字。脚本的一部分现在是这样的,但是由于第二行,它当然不起作用:

Value = int(input("Type your first name: "))
x.execute("UPDATE test SET id=(last id)+1 WHERE firstname=%s", (Value,))

我想做的是从键盘输入名字并将其上传到数据库。如果 table 中已经有那个名字,请更改他的 id,这是一个 VARCHAR 并使新的 id = Last id + 1。例如,如果我键入 Doe 并且数据库中也有 Doe 作为名字更改 Doe's行 ID 号,通过加 1 并使其成为 2 为 1。

抱歉回答晚了。

我强烈建议将 ID 设为具有 AUTO INCREMENT 和 PRIMARY KEY 的 INT 以防止重复,但这不允许您随意更改它。

你需要检查一下你在数据库中写的名字是否重复,对吗?

  • 如果没有,添加一个新行。
  • 如果有,将该名称的 ID 加一。

为了检查该名称是否已在数据库中,您需要执行 SQL 查询,然后检查结果并将找到的名称与您写入的名称进行比较。

首先,查询数据库中已有的姓名。 然后,检查名称是否已经存在。 然后再次更新或向数据库中插入新行。

x.execute("""SELECT firstname FROM test""")
for row in x:
  result = row[0]
  if result == name:
    nameExists = True
  else:
    nameExists = False

if !nameExists:
  x.execute("""INSERT INTO test(firstname, id) VALUES (%s), (%s)""", name, id)

else:
  x.execute("""SELECT id FROM test WHERE firstname = %s""", name)
  for row in x:
    actualId = row[0]
  actualId = actualId + 1;
  x.execute("""UPDATE test SET id = %s WHERE firstname = %s""", actualId, name)

以上代码可能会根据您的变量名称或首选项进行更改。 不要把它当作工作,直接复制粘贴到你的代码中。


我希望答案是令人满意和完整的。如果没有,请告诉我。第一次回答问题,可能没答对

感谢您的理解。