tkinter Treeview помещает данные MySQL в один столбец - PullRequest
0 голосов
/ 08 ноября 2018

, поэтому я искал несколько дней и пробовал различные решения проблем других людей, которые кажутся такими же, как у меня, но, к сожалению, я не достиг никакого прогресса. Я все еще очень новичок в базах данных python, tkinter и mysqli. То, что я пытаюсь сделать, это иметь программу инвентаризации, это просто так просто. Вы можете войти и добавить, удалить или просто просмотреть, что находится в базе данных. Я могу просто добавлять и удалять элементы, но у меня возникла проблема с переносом данных в правильные столбцы.

До сих пор я пытался извлекать каждую переменную и назначать ее соответственно, пытался извлекать по одной строке за раз, даже переключаться на новую базу данных, но не получил правильных результатов. Если я использую sqlite 3, он работает нормально, так ведь mysql находится на сервере, а не локально? В любом случае, я хотел бы получить совет, чтобы направить меня в правильном направлении, поэтому любая помощь очень ценится. This is what happens when I run the program Edit:

 tree.insert("", 1, "dirIso", text="ProductID")
for n, dirIso in enumerate(results,1):
    list_of_column_values = [list(_dict.values())[0] for _dict in dirIso]
    tree.insert('dirIso', n, text=list_of_column_values[0],
                values=list_of_column_values[1:])
cursor.close()
conn.close()

Это то, что я сделал, теперь я получаю, что у объекта 'str' нет атрибута 'values'. Нужно ли менять? Или он ищет имя в моей базе данных как значения, а не столбцы?

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

1 Ответ

0 голосов
/ 09 ноября 2018

Вопрос : Treeview помещает данные mysql в один столбец


Редактировать ваш Вопрос, показывая три строки данных results, если ваш results не выглядит следующим образом.

Предполагая следующее results == list из dict!

 results = [{'produkt_id': '1234', 'Name': 'John', 'Address': 'NewYork'},
            {'produkt_id': '5678', 'Name': 'Peter', 'Address': 'Boston'}
           ]

Вам не нужно Заголовок дерева , как вы хотите Tabelview

# Dict's are unordered, 
# therfore you need a list of fieldnames in your desired order
fieldnames = ['produkt_id', 'Name', 'Address']

# Loop results
for n, _dict in enumerate(results,1):
    # Create a list of values from this _dict
    _list = []
    for key in fieldnames:
        _list.append(_dict[key])

    # The first value goes to 'text'
    # All others goes to 'values'
    tree.insert('', 'end', n, text=_list[0], values=_list[1:])

выход

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