如何划分 2 个 VARCHAR(255) 值并插入行 (MySQL, Python)

How to divide 2 VARCHAR(255) values and insert into row (MySQL, Python)

Table数据:

我有一个 table cpu 列名称、价格、ID、标记、价值

数据格式:

价格值为$xxx.xx,标记值为xxxxxx,均存储为VARCHAR(255)。

问题:

我如何将价格划分为标记,然后使用 MySQL python 将该变量存储在每一行的值中?

我对代码有以下想法:对于每一行获取价格和标记检查它们都有一个值,通过删除“$”并将其设置为浮点数将价格转换为浮点数。然后我可以将标记设置为浮点数,这样我就可以将价格划分为标记并将该值作为 VARCHAR(255) 保存到值列中,然后再移动到下一行,直到我遍历所有行。

Python table 创建码:

mycursor.execute("CREATE TABLE IF NOT EXISTS cpu (name VARCHAR(255) UNIQUE, price VARCHAR(255), id VARCHAR(255) UNIQUE, mark VARCHAR(255), value VARCHAR(255))")

SQL fiddle:

SQL fiddle of table structure

示例:

价格:$250,标记:13500

我想用价格除以马克来计算价值(马克每美元)

我希望将此值存储为数字,例如

值:54

我希望每一行都发生这种情况,直到所有行都完成为止,如果任一字段都没有值,我想跳过该行。

更新:

mycursor = mydb.cursor()

number_of_rows = mycursor.execute("select * from cpu")

result = mycursor.fetchall()
for row in result:
  print(row)

上面的代码循环遍历所有行,但我不确定如何只打印价格和标记,我也不确定如何在每一行中插入一个值?

其他

如果您需要更多详细信息,请告诉我。

如有任何帮助,我们将不胜感激。

谢谢

mycursor = mydb.cursor()

mycursor.execute("SELECT num, price, mark FROM cpu")

myresult = mycursor.fetchall()

for x in myresult:
  print(x)
  y = str(x)
  num, price, mark = y.split(',')
  num = num.replace("(", "")
  price = price.replace("'", "")
  price = price.replace(" ", "")
  price = price.replace("$", "")
  mark = mark.replace(")", "")
  mark = mark.replace("'", "")
  mark = mark.replace(" ", "")
  price = float(price)
  if mark != "None":
    mark = float(mark)
    value = mark/price
  else:
    value = 0
  value = round(value, 2)
  value = str(value)
  num = str(num)
  print(num)
  print(price)
  print(mark)
  print(value)
  sql = "UPDATE cpu SET value = " + value + " WHERE num = " + num +";"
  print(sql)
  mycursor.execute(sql)

  mydb.commit()

mydb.commit()

这是我编写的代码,解决了我的问题,我几乎可以肯定它可以改进,所以请随时添加其他答案或评论,我会更改它。