Копирование и реорганизация данных из одной таблицы в другую в sqlite3 с помощью Python - PullRequest
0 голосов
/ 13 февраля 2019

Вот моя проблема.У меня есть куча данных, организованных так:

(bad_table)

Имя ....... Вещи ...... Количество

Дейв ........ Дома ....... 1

Боб ..........Автомобили ............ 2

Джефф ........... Лодки .......... 1

Боб .......... Дома ....... 1

Дейв ........ Дети ............ 3

Джефф .......... Автомобили ............ 3

И я бы хотел, чтобы все было организовано так:

(good_table)

Имя ..... Дома ....... Лодки ..... Автомобили

Дейв ........... 1 ................ 0 ............. 0

Боб ............. 1 ................ 0 ............. 2

Джефф.............. 0 ................ 1 ............. 3

Это упрощено;Я на самом деле хотел бы сделать таблицу с сотнями вещей / столбцов, но вы поняли идею.Мой подход состоял в том, чтобы создать таблицу good_table со столбцами для Name, Houses, Boats, Cars и строками для Dave, Bob и Jeff, но без заполнения других значений. Затем для каждого Name я бы создал список кортежей (Iдумать) из оригинальной bad_table, говоря, например,

Items = cur.execute(“SELECT Thing, Count FROM bad_table WHERE Name = Dave”)

, который дает мне «Предметы», которые выглядят как [('Houses', 1), ('Boats', 0), ('Cars, 0), («Дети», 3)].Тогда я бы сказал:

For item in Items: 
    Thing = item[0]
    Count = item[1]
    cur.execute(“INSERT INTO good_table ? = ? WHERE Name = Dave”, (Thing, Count))

Который, я думаю, должен был бы в первую очередь перевести на

“INSERT INTO good_table Houses = 1 WHERE Name = Dave”

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

(“UPDATE good_table SET ? = ? WHERE Name = Dave”, (Name, Count)) 

на тот случай, если проблема заключалась в том, что sqlite3 обрабатывал значения None в (на мой взгляд) пустых столбцах как уже заполненные. Но это не так.либо не работает.

Если вы не можете сказать, я довольно новичок во всем этом (Python, SQL и т. д.) и много полагаюсь на метод проб и ошибок (наряду с, конечно,, очень тщательное прочтение документации).

Потенциальные источники моей проблемы, о которых я могу думать:

1) Не каждое «Вещество» из bad_table соответствует столбцу вgood_table (например, «Дети»).Я надеюсь, что sqlite просто пропустит мои попытки «вставить INTO» в данные good_table, которые там не помещаются, но я этого не знаю.

2) Более вероятно, что я форматирую что-то неправильно, или пропускаю запятую или набор фигурных скобок или что-то там, где они мне нужны.Вот почему я пришел к вам, хорошие люди, за советом.

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

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