我正在使用 Python 2.7 和 MySQLdb。我创建了一个数据库,其中有一个名为 test 的表,其中有两个字段(id,名字)。整个脚本是关于计算并显示我们有多少个相同的名字。脚本的部分现在是这样的,但当然由于第二行它不起作用:
Value = int(input("Type your first name: "))
x.execute("UPDATE test SET id=(last id)+1 WHERE firstname=%s", (Value,))
我想做的是从键盘输入名字并将其上传到数据库。如果表中已经存在该名字,请更改其 VARCHAR id,并使新 id = Last id + 1。例如,如果我输入 Doe,并且数据库中也有 Doe 作为名字,则更改 Doe 的行 ID 号,其中加 1 等于 2 就是 1。
最佳答案
抱歉回复晚了。
我强烈建议将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)
上面的代码可能会根据您的变量名称或首选项进行更改。 不要认为它有效,并将其直接复制粘贴到您的代码中。
<小时/>我希望答案是令人满意且完整的。如果没有,请告诉我。这是我第一次回答问题,可能做得不太好。
感谢您的理解。
关于python - 更新 MySQL 字段的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30154815/