Форум сайта python.su
0
Друзья есть следующая функция, которую реализовал при помощи подсказок со stackoverflow
Но не до конца есть понимание того как она работает:
Собственно сама функция:
def update_record(self, description, costs, total): for selected_item in self.tree.selection(): self.db.c.execute('''UPDATE finance SET description=?, costs=?, total=? WHERE ID =?''', (description, costs, total, self.tree.set(selected_item, '#1'))) self.db.conn.commit()
def update_record(self, description, costs, total):
for selected_item in self.tree.selection():
'''UPDATE finance SET description=?, costs=?, total=? WHERE ID =?'''
(description, costs, total, self.tree.set(selected_item, '#1'))
WHERE ID=?
With two arguments, returns the current value of the specified column.то получается данный метод возвращает текущее значение указанного столбца (если используем два аргумента, что в моём случае). И на этом месте у меня заканчивается понимание работы моего алгоритма. А именно, что возвращает в действительности метод .set() c указанными мною аргументами и что нужно получить
WHERE ID =?
Офлайн
27
Из ttk.Treeview получение значения values из второй колонки, для выделенной строки, я делал так:
try: item = self.tree.selection()[0] except IndexError: showerror(title='Исправление кратности', message='Не выбрано наименование из списка') return # Получим значение из второй колонки vibran = self.tree.item(item, "values")[1] # Далее обработка полученного
for item in self.tree.selection(): vibran = self.tree.item(item, "values")[1]
Офлайн
0
Дело в то что вариант моей реализации работает корректно и как мне нужно, но я не могу до конца понять как это работает. В первом посту я указал, на каком моменте моё понимание закончилось.
Скрин программы
Прикреплённый файлы:
Снимок.PNG (13,8 KБ)
Офлайн
0
Верно ли я понимаю, что
WHERE ID =?
Офлайн
27
Как бы странным не казалось, но tree.set(selected_item, ‘#1’) с этими двумя аргументами возвращает id строки. Если дополнительно дать аргумент value, то изменит значение в указанной колонке для строки с selected_item в отображаемом дереве, только на экране.
FeelgoodПравильно понимаешь, если под изменяемым имеешь в виду значения в БД. В UPDATE со знаками вопроса вместо вопросов подставятся те значения, которые перечислены в кортеже после “UPDATE …”. Далее будет выполнен UPDATE, дополненный указанными в кортеже значениями.
Верно ли я понимаю, что
WHERE ID =?
должен на вход получить id строки которую необходимо изменить …
Помогите пожалуйста…
Отредактировано Rafik (Фев. 4, 2019 14:35:48)
Офлайн