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



表格数据:

我有一个表cpu,里面有列名称、价格、id、标记、值

数据格式:

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

问题:

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

关于代码,我有以下想法:对于每一行获取价格和标记检查,它们都有一个值,通过删除"$"并将其设置为浮动来将价格转换为浮动。然后,我可以将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 fiddle

示例:

价格: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()

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

最新更新