Python SQLite3, как добавить данные в базу данных из полей ввода? - PullRequest
0 голосов
/ 21 сентября 2018

Мне нужно добавить данные из полей ввода и комбинированного списка, но при передаче их значений через get () добавляются сами запросы (self.entry_description.get (), self.combobox.get ()) `.Как это исправить?

    self.entry_description = ttk.Entry(self)
    self.entry_description.place(x=200,y=50)
    self.entry_money = ttk.Entry(self)
    self.entry_money.place(x=200,y=110)

    self.combobox = ttk.Combobox(self, values=(u'Доходы',u'Расходы'),state='readonly')
    self.combobox.current(0)
    self.combobox.place(x=200,y=80)

    btn_add = tk.Button(self, text='Добавить', command = BD().add_item())
    btn_add.place(x=220, y=170)
    btn_add.bind('<Button-1>')

    btn_cancel = tk.Button(self, text='Отменить', command=lambda: self.destroy())
    btn_cancel.place(x=300, y=170)
    btn_cancel.bind('<Button-1>')


    self.grab_set()
    self.focus_set()



class BD:
def create(self):
    conn = sqlite3.connect('finance.db')
    cursor = conn.cursor()

    cursor.execute("""CREATE  TABLE IF NOT EXISTS albums (ID integer primary key,
                                                          description text,
                                                          costs text,
                                                          total real)""")
    conn.commit()

def add_item(self):
    cursor = sqlite3.connect('finance.db').cursor()
    cursor.execute("""INSERT INTO albums(description, costs, total) VALUES (?, ?, ?)""",
                  (self.entry_description.get(), self.combobox.get(), self.entry_money.get()))

1 Ответ

0 голосов
/ 21 сентября 2018

В настоящее время происходит передача строковых литералов во вставку, которые являются именами переменных.Вы должны использовать подготовленный оператор и затем связать свои переменные Python:

cursor = sqlite3.connect('finance.db').cursor()
cursor.execute("""INSERT INTO albums(description, costs, total) VALUES (?, ?, ?)""",
    (self.entry_description.get(), self.combobox.get(), self.entry_money.get()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...