我正在使用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。
答案 0 :(得分:1)
对不起,迟到了。
我强烈建议使用AUTO INCREMENT和PRIMARY KEY将ID设为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)
上述代码可能会根据您的变量名称或首选项而更改。 不要将其视为有效,并将其直接复制粘贴到您的代码中。
我希望答案能够完美无缺。如果没有,请告诉我。这是我第一次回答问题,而我可能没有正确地做到这一点。
感谢您的理解。