Найти - Пользователи
Полная версия: Изменение, удаление , редактирование данных. Sqlite3
Начало » Базы данных » Изменение, удаление , редактирование данных. Sqlite3
1
JJ39
Добрый день, опишу ситуацию.
Выгружаю базу данных в приложение на python Tkinter.
Вывожу данные в Поля Entry(скрин 1)
Как редактировать эти записи? Возможно ли редактировать, а потом просто сохранять или обязательно использование языка SQLite?
Rafik
После изменения содержимого Entry необходимо, через команды SQLite, внести эти изменения в БД. Делаем это sqlite-вским UPDATE, который вызывается через cursor.execute(“UPDATE и т.д.”), затем закрепляется комнадой cursor.commit(), если не ошибаюсь. Вкратце, как-то так.
JJ39
Rafik
я не понимаю как данные из редактироваемого Entry передать в базу. get.entry- передаёт последнюю ячейку.
Так же я не знаю как передать в set нужный столбик.
 cursor.execute("UPDATE {} SET {}=get.entry WHERE = 1;".format(all_table))
Я могу сделать к каждой ячейки, но мне необходимо, чтобы работа была автоматизированна.
doza_and
JJ39
языка SQLite?
Языка SQLite не существует. Есть SQL
JJ39
или обязательно использование языка SQL?
SQLite используют когда кровь из носу хотят использовать SQL.
Еще причина - данные не лезут в память. Но
JJ39
Выгружаю базу данных в приложение
Значит у вас это не проблема.
Тогда зачем вы вообще SQLite используете????
JJ39
но мне необходимо, чтобы работа была автоматизированна.
Это непонятно. как при написании программы вообще можно сделать не автоматизированно.

У меня сложилось впечатление что ваш уровень владения инструментами (python, sql, Tkinter) недостаточен для решения задачи.

Я бы посоветовал не учить все вместе а решать задачу поэтапно.

Если нужна автоматизация то GUI только вредит. Выкидываете TKinter,SQLite решаете задачу чисто на питоне. Сохраняете/восстанавливаете при помощи pikle или csv. Дальше осваиваете numpy/pandas. потом TK. Если он вообще нужен.

Rafik
Для начала, при создании поля ввода на Entry и не только на нём, необходимо привязать каждое поле к переменной tkinter. Для этого объявляем необходимые переменные tkinter-а (StringVar(), DoubleVar(), IntVar()), затем привязываем к полю ввода требуемую переменную. Для заполнения поля Entry требуемым значением достаточно изменить привязанную переменную через его атрибут set(). Для получения значения из поля ввода читаем содержимое переменной через его get().
В Вашем случае лучше всего организовать хранение переменных в списке, который будет содержать строку таблицы в виде списка, т.е. будет список в списке.
 from tkinter import *
tbl1 = []
stroka1 = []
# Заполняем одну строку
for x in range(5):
    stroka1.append(StringVar())  # Entry поддерживает только текст?
# Заполняем таблицу тремя строками
for x in range(3):
    tbl1.append(stroka1[:])
# Теперь tbl1[0] это будет первая строка, а в tbl1[1][2] - это третья колонка второй строки
# Думаю, идея понятна.
# tbl1[0][1].set("slovo") - во вторую колонку третьей строки будет загружено значение "slovo"
# tbl1[0][2].get() - получим значение третьей колонки первой строки
# Привязка к Entry первой колонки первой строки
poleA1 = Entry(master=fram_tbl, textvariable=tbl1[0][0], далее другие параметры)
# Привязка к Entry второй колонки первой строки
poleB1 = Entry(master=fram_tbl, textvariable=tbl1[0][1], далее другие параметры)
# Набивку окна полями ввода можно сделать в цикле не именовывая их
# Для обращения к полю ввода не нужно его имя, достаточно привязанной tkinter.переменной
JJ39
Rafik
Спасибо вам большое, в моих знания есть пробелы, но время не терпит, курсовую надо сдавать. Не будет проблем если у меня разное количество столбцов в таблицах?
P.S Почему то не могу повысить вам репутацию!
Rafik
JJ39
Не будет проблем если у меня разное количество столбцов в таблицах?
Здесь можно сделать так: выбрать таблицу с максимальным количеством столбцов и сделать окно под неё. Для остальных, где столбцов меньше - делать лишние Entry как readonly и предварительно очистить их переменные.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB