更新MySQL字段的行

时间:2015-05-10 18:03:37

标签: python mysql mysql-python equation

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

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

我要做的是从键盘输入名字并将其上传到数据库。如果表中已存在该名字,则更改其ID为VARCHAR,并使新id = Last id + 1.例如,如果我键入Doe并且还有Doe作为数据库中的名字,则更改Doe' s行ID号,通过加1并使其成为2,为1。

1 个答案:

答案 0 :(得分:1)

对不起,迟到了。

我强烈建议使用AUTO INCREMENT和PRIMARY KEY将ID设为INT,以防止重复,但这不允许您根据需要随意更改ID。

您需要检查您在数据库中写的名称是否重复,我是对的吗?

  • 如果,请添加新行。
  • 如果有,请将该名称的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)

上述代码可能会根据您的变量名称或首选项而更改。 不要将其视为有效,并将其直接复制粘贴到您的代码中。

我希望答案能够完美无缺。如果没有,请告诉我。这是我第一次回答问题,而我可能没有正确地做到这一点。

感谢您的理解。