如何划分2个varchar(255)值并插入行(mysql,python)

9rygscc1  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(384)

表格数据:
我有一个cpu表,表中有name、price、id、mark和value列
数据格式:
价格值是$.xx,标记值是,两者都存储为varchar(255)s。
问题:
如何将price划分为mark,然后使用mysql-python将该变量存储在每行的值中?
关于代码,我有如下想法:对于每一行get price和mark check,它们都有一个值,通过删除“$”并将其设置为float,将price转换为float。然后我可以将mark设置为float,这样我就可以将price划分为mark,并将这个值作为varchar(255)保存到value列中,然后再移到下一行,直到我遍历了所有行。
python表创建代码:

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小提琴:
sql表结构
例子:
价格:250美元,马克:13500
我想用马克除以价格来计算价值(每美元马克)
我想把这个值存储为数字。
值:54
我希望每一行都发生这种情况,直到所有行都完成,如果两个字段都没有值,我希望跳过这一行。
更新:

mycursor = mydb.cursor()

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

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

上面的代码循环的所有行,但我不知道如何只打印价格和马克,我也不知道如何插入一个值的价值在每一行?
其他
如果你需要更多的细节请告诉我。
任何帮助都将不胜感激。
谢谢

rsl1atfo

rsl1atfo1#

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()

这是我的代码,解决了我的问题,我几乎可以肯定它可以改进,所以请随时添加另一个答案或评论,我会改变它。

相关问题