Я новичок в MySQL, так что извиняюсь, если это интуитивная проблема, я не мог найти ничего слишком полезного в stackoverflow. В настоящее время у меня довольно много финансовых данных в одной строке, каждое значение разделяется запятой. 12 значений равны одному набору данных, поэтому я хочу создать новую строку после каждых 12 значений.
Другими словами, данные, которые у меня есть, выглядят следующим образом: (open_time, open, high, low, close, volume, close_time, quotevol, trades, ignore1, ignore2, ignore3,... repeat...)
И я хотел бы, чтобы это выглядело так:
Row1: (open_time, open, high, low, close, volume, close_time, quotevol, trades, ignore1, ignore2, ignore3) Row2: (open_time2, open2, high2, low2, close2, volume2, close_time2, quotevol2, trades2, ignore4, ignore5, ignore6)
Row3:...
Данные уже являются.sql файлом, и я тоже получаю его в таблице, если это имеет значение. Чтобы уточнить, таблица, в которой она находится, имеет только одну строку и один столбец.
Если я правильно понял, вы хотите сделать следующее:
То, как я буду заниматься этим в Python, это:
Код:
import mysql
import pandas as pd
query = '''this is your sql statement that returns everything into the first row of the first column in your query results'''
cnx = mysql.connector.connect('''enter relevant connection information here: user, password, host, and database''')
mycursor = cnx.cursor()
mycursor.execute(query)
tup = tuple(mycursor.fetchall()[0])
text = str(tup[0])
ls = text.split(',') # converts text into list of items
n = 12
rows = [ls[i:i + n] for i in range(0, len(ls), n)]
data = []
for row in rows:
data.append(tuple(row))
labels = ['open_time','open','high','low','close','volume','close_time','quotevol','trades','ignore1','ignore2','ignore3']
df = pd.DataFrame.from_records(data, columns=labels)
print(df)
Код списка понимание было взято из этого. Вы не указали точно, как вы хотели получить результирующий набор данных, но кадр данных pandas должен иметь каждую из ваших строк.
Без фактической строки или набора данных я не могу подтвердить, что это работает полностью. Сможете ли вы дать нам минимальный, полный и проверенный пример?
Я не сомневаюсь, что есть способ сделать это в MySQL, но я бы подошел к нему, экспортировав запись как.CSV.
Напишите простой скрипт python с использованием модуля CSV и сдвиньте каждое x число полей в новую строку, используя запятую в качестве разделителя. После этого вы можете повторно импортировать его обратно в MySQL.