Найти - Пользователи
Полная версия: Помогите очень срочно немогу разобраться с ошибкой
Начало » Центр помощи » Помогите очень срочно немогу разобраться с ошибкой
1
dimas__77
 from tkinter import *
import tkinter as tk
from tkinter import ttk
import sqlite3
class Main(tk.Frame):
    def __init__(self, root):
        super().__init__(root)
        self.init_main()
        self.db = db
        self.view_records()
    def init_main(self):
        toolbar = tk.Frame(bg='#d7d8e0', bd=2)
        toolbar.pack(side=tk.TOP, fill=tk.X)
        btn_open_dialog = tk.Button(toolbar, text='lÄGG TILL KUND', command=self.open_dialog, bg='#d7d8e0', bd=2,
                                    compound=tk.TOP, )
        btn_open_dialog.pack(side=tk.LEFT)
        self.tree = ttk.Treeview(self, columns=('ID', 'Kundens namn', 'Kundens adress', 'Djur', 'Djurens namn', 'Datum', 'Behandling', 'Kostnad'), height=15, show='headings')
        self.tree.column('ID', width=30, anchor=tk.CENTER)
        self.tree.column('Kundens namn', width=100, anchor=tk.CENTER)
        self.tree.column('Kundens adress', width=100, anchor=tk.CENTER)
        self.tree.column('Djur', width=50, anchor=tk.CENTER)
        self.tree.column('Djurens namn', width=100, anchor=tk.CENTER)
        self.tree.column('Datum', width=50, anchor=tk.CENTER)
        self.tree.column('Behandling', width=90, anchor=tk.CENTER)
        self.tree.column('Kostnad', width=80, anchor=tk.CENTER)
        self.tree.heading('ID', text='ID')
        self.tree.heading('Kundens namn', text='Kundens namn')
        self.tree.heading('Kundens adress', text='Kundens adress')
        self.tree.heading('Djur', text='Djur')
        self.tree.heading('Djurens namn', text='Djurens namn')
        self.tree.heading('Datum', text='Datum')
        self.tree.heading('Behandling', text='Behandling')
        self.tree.heading('Kostnad', text='Kostnad')
        self.tree.pack()
    def records(self, Kundensnamn, Kundensadress, Djur, Djurensnamn, Datum, Behandling, Kostnad):
        self.db.insert_data(Kundensnamn, Kundensadress, Djur, Djurensnamn, Datum, Behandling, Kostnad )
        self.view_records()
    def view_records(self):
        self.db.c.execute('''SELECT * FROM finance''')
        [self.tree.delete(i) for i in self.tree.get_children()]
        [self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()]
    def open_dialog(self):
        Child()
class Child(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child()
        self.view = app
    def init_child(self):
        self.title('lÄGG TILL KUND')
        self.geometry('400x220+400+300')
        self.resizable(False, False)
        label_Kundensnamn = tk.Label(self, text='Kundens namn:').grid(row=1,column=1)
        self.entry_Kundensnamn = ttk.Entry(self)
        self.entry_Kundensnamn.grid(row=2,column=1,padx=(10.0))
        label_adress = tk.Label(self, text='Kundens adress:').grid(row=3,column=1)
        self.entry_Kundensadress = ttk.Entry(self)
        self.entry_Kundensadress.grid(row=4,column=1,padx=(10.0))
        label_animal = tk.Label(self, text='Djur:').grid(row=5,column=1)
        self.entry_Djur = ttk.Entry(self)
        self.entry_Djur.grid(row=6,column=1,padx=(10.0))
        label_Djurensnamn = tk.Label(self, text='Djurens namn:').grid(row=7,column=1)
        self.entry_Djurensnamn = ttk.Entry(self)
        self.entry_Djurensnamn.grid(row=8,column=1,padx=(10.0))
        label_Datum = tk.Label(self, text='Datum:').grid(row=1,column=2)
        self.entry_Datum = ttk.Entry(self)
        self.entry_Datum.grid(row=2,column=2,padx=(10.0))
        label_Behandling = tk.Label(self, text='Behandling:').grid(row=3,column=2)
        self.entry_Behandling = ttk.Entry(self)
        self.entry_Behandling.grid(row=4,column=2,padx=(10.0))
        label_Kostnad = tk.Label(self, text='Kostnad:').grid(row=5,column=2)
        self.entry_Kostnad = ttk.Entry(self)
        self.entry_Kostnad.grid(row=6,column=2,padx=(10.0))
        btn_cancel = ttk.Button(self, text='STÄNG', command=self.destroy)
        btn_cancel.grid(row=8, column=2, padx=(10,0))
        btn_ok = ttk.Button(self, text='ANGE')
        btn_ok.grid(row=9, column=2, padx=(10,0))
        btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_Kundensnamn.get(),
                                                                  self.entry_Kundensadress.get(),
                                                                  self.entry_Djur.get(),
                                                                  self.entry_Djurensnamn.get(),
                                                                  self.entry_Datum.get(),
                                                                  self.entry_Behandling.get(),
                                                                  self.entry_Kostnad.get()))
        self.grab_set()
        self.focus_set()
class DB:
    def __init__(self):
        self.conn = sqlite3.connect('finance.db')
        self.c = self.conn.cursor()
        self.c.execute(
            '''CREATE TABLE IF NOT EXISTS finance (id integer primary key, Kundens namn text, Kundens adress text,
             Djur text, Djurens namn text, Datum real, Behandling text, Kostnad real)''')
        self.conn.commit()
    def insert_data(self, Kundensnamn, Kundensadress, Djur, Djurensnamn, Datum, Behandling, Kostnad ):
        self.c.execute('''INSERT INTO finance(Kundens namn, Kundens adress, Djur, Djurens namn, Datum,
                       Behandling, Kostnad) VALUES  (?, ?, ?, ?, ?, ?, ?)''',
                       ( Kundensnamn, Kundensadress, Djur, Djurensnamn, Datum, Behandling, Kostnad))
        self.conn.commit()
if __name__ == "__main__":
    root = tk.Tk()
    db = DB()
    app = Main(root)
    app.pack()
    root.title("Klinik finance")
    root.geometry("650x450+300+200")
    root.resizable(False, False)
    root.mainloop()
………………………………………………………………………………………

выдает line 128, in insert_data
( Kundensnamn, Kundensadress, Djur, Djurensnamn, Datum, Behandling, Kostnad))
sqlite3.OperationalError: near “namn”: syntax error

FishHook
dimas__77
А разве названия столбцов БД могут содержать пробелы?
rami
FishHook
А разве названия столбцов БД могут содержать пробелы?
Могут, если в кавычках:
 '''CREATE TABLE IF NOT EXISTS finance (id integer primary key, "Kundens namn" text, "Kundens adress" text,
             "Djur" text, "Djurens namn" text, "Datum" real, "Behandling" text, "Kostnad" real)'''
FishHook
rami
Могут, если в кавычках
Отлично!
dimas__77
добавьте кавычки!
dimas__77
Не помогло

rami
Старую не правильно созданную базу удалили? Иначе, новая с правильными полями не создастся.
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