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

Posted

技术标签:

【中文标题】如何划分 2 个 VARCHAR(255) 值并插入行(MySQL,Python)【英文标题】:How to divide 2 VARCHAR(255) values and insert into row (MySQL, Python) 【发布时间】:2019-05-16 06:13:57 【问题描述】:

表格数据:

我有一个表 cpu,其中包含列名称、价格、id、标记、值

数据格式:

价格值为 $xxx.xx,标记值为 xxxxxx,两者都存储为 VARCHAR(255) 的。

问题:

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

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

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

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

其他

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

任何帮助将不胜感激。

谢谢

【问题讨论】:

发布SHOW CREATE TABLE table_name的文字结果;请。 请在您的示例表中发布数据,以便我们处理您的数据。 给你:db-fiddle.com/f/sngju1uUBNMF56eVVTYu6H/5 谢谢 我在想我必须通过删除“$”将价格转换为 python 中的浮点数,然后将其与标记一起转换为浮点数,这样我就可以将它们分开以创造价值。但是我不确定这样做的代码。谢谢 我还更新了帖子中的信息以及我认为可能有帮助的其他内容。谢谢 【参考方案1】:
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()

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

【讨论】:

以上是关于如何划分 2 个 VARCHAR(255) 值并插入行(MySQL,Python)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL更新计算错误的划分

思科3560交换机如何划分vlan

VARCHAR 字段被截断为 255 个字符

<转> MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

数据库中的 varchar(255) 原因剖析

Javascript - 计算相同的值并划分数组中相同值的结果