python - 更新 MySQL 字段的行

标签 python mysql mysql-python equation

我正在使用 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/

相关文章:

python - 如何仅在特定时间间隔内增加值(value)python

python - 我一直收到错误 'module' 对象没有属性 'init'

python - 元素不再附加到 DOM 和超时异常

python - 除非在某些条件下,否则得出出现在列表列表中的重复项列表

java - Hibernate JPA create table type=InnoDB 问题

MYSQL查询日期之间

mysql - 为什么这个表名需要反引号?

mysql - 同一行 ID 后主主复制失败

python - 在 Mac 上安装 MySQLdb

python MySQLdb : SELECT DISTINCT - why returning long