Как разделить 2 значения VARCHAR (255) и вставить в строку (MySQL, Python) - PullRequest
0 голосов
/ 15 декабря 2018

Данные таблицы:

У меня есть процессор таблицы с именем столбца, ценой, идентификатором, отметкой, значением

Формат данных:

Значение цены составляет $ 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 структуры таблицы

Пример:

цена: 250 долларов США, оценка: 13500

Я хочу разделить отметку по цене для расчета значения (марок за доллар)

Я хочу, чтобы это значение сохранялось как число, например,

значение: 54

Я хочу, чтобы это происходило для каждой строки, пока все строки не будут завершены, если для какого-либо поля нет значения, которое я хочу пропуститьстрока.

Обновление:

mycursor = mydb.cursor()

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

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

Приведенный выше кодовый цикл проходит по всем строкам, но я не уверен, как печатать только цену и пометить, я также не уверен, каквставить значение для значения в каждой строке?

Другое

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 18 декабря 2018
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()

Это код, который я создал, который решил мою проблему, я почти уверен, что его можно улучшить, поэтому не стесняйтесь добавлять другой ответ или комментарий, и я его изменю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...