Monday, January 20, 2020

IslandT: Python class to create SQL database, table and submit values

Let us continue with the final touch up of the python class uses to create SQL database and submits values to the SQL database’s earning table.

What we have modified from the previous Input class.

  • The main program will only call the Input class once to create the SQL database and the earning table if they have not been created yet!
  • We will pass the action button into the Input class and disable the action button if there is an ongoing committing job.
  • The main program will pass the description and earning into the submit method of the Input class.

Below is the final revised version for both the main program and the Input class.

import tkinter as tk
from tkinter import ttk

from Input import Input

win = tk.Tk()

win.title("Earning Input")

def submit():
    if(description.get()!='' and earning.get()!=""):
        sub_mit.submit(description.get(), earning.get())
    else:
        print("You need to enter a value!")

#create label frame for ui
earn= ttk.Labelframe(win, text = "Daily Earning Input")
earn.grid(column=0, row=0, padx=4, pady=4)
# create label for description
dLabel = ttk.Label(earn, text="Description:").grid(column=0, row=0)
# create text box for description
description = tk.StringVar()
descriptionEntry = ttk.Entry(earn, width=13, textvariable=description)
descriptionEntry.grid(column=1, row=0)

# create label for earning
eLabel = ttk.Label(earn, text="Earning:").grid(column=2, row=0)
# create text box for earning
earning = tk.StringVar()
earningEntry = ttk.Entry(earn, width=13, textvariable=earning)
earningEntry.grid(column=3, row=0)
# create the action button
action = ttk.Button(earn, text="submit", command=submit)
action.grid(column=5, row=0)

win.resizable(0,0)

sub_mit = Input(action)
sub_mit.setting()

win.mainloop()
import sqlite3

class Input:
    def __init__(self, action):
        self.action = action

    def setting(self):
        self.action["state"] = "disabled"
        conn = sqlite3.connect('daily_earning.db')
        print("Opened database successfully")
        try:
            conn.execute('''CREATE TABLE DAILY_EARNING_CHART
                 (ID INTEGER PRIMARY KEY AUTOINCREMENT,
                 DESCRIPTION    TEXT (50)   NOT NULL,
                 EARNING    TEXT  NOT NULL,
                 TIME   TEXT NOT NULL);''')
        except:
            pass

        self.action["state"] = "enable"

        conn.close()

    def submit(self,description, earning): # Insert values into earning table
        self.action["state"] = "disabled"
        self.description = description
        self.earning = earning
        try:
            sqliteConnection = sqlite3.connect('daily_earning.db')
            cursor = sqliteConnection.cursor()
            print("Successfully Connected to SQLite")

            sqlite_insert_query = "INSERT INTO DAILY_EARNING_CHART (DESCRIPTION,EARNING,TIME) VALUES ('" + self.description + "','"+ self.earning + "',datetime('now', 'localtime'))"

            count = cursor.execute(sqlite_insert_query)
            sqliteConnection.commit()
            print("Record inserted successfully into DAILY_EARNING_CHART table", cursor.rowcount)
            cursor.close()

        except sqlite3.Error as error:
            print("Failed to insert earning data into sqlite table", error)
        finally:
            if (sqliteConnection):
                sqliteConnection.close()
            self.action["state"] = "enable"

The python program works alright!

More shoes have been sold!

That is all, in the next chapter we will include more features into the above python class file!



from Planet Python
via read more

No comments:

Post a Comment

TestDriven.io: Working with Static and Media Files in Django

This article looks at how to work with static and media files in a Django project, locally and in production. from Planet Python via read...