Archive

Posts Tagged ‘programm’

Python: Cooking App P-1

February 4, 2020 1 comment


Learning : Python, Data-Base, SQlite
Subject: Writing a Cooking Application

Over view: We will start new project to work on in coming weeks, and will call it ” Cooking App” I will use Python as a code language and Sqlite3 as a database in a full stack task.

Assumptions: I will assume that we have some basic information about Database such as Tables, fields, records and relationships between tables also Primary key and foreign keys. All this are important just to understand what’s going on, and we will write the code to generate all tables through Python code.

The Concept: The Cooking App will give the user the ability to write a food Recipe with it’s ingredients and how to cook it. (Along with it’s photo.. ) The application will have the ability to store a list for ingredient so the user can select from it instead of re-writing it every time, also to save the photo of your dish if you want.

Data-Base Design: In this application we will need four Tables, we will call them: Recipes, Photo, Rec_ingredients and ingredient_list. Each table will have a Primary Key (id).

Here are the Tables and the Fields

    Recipes

  • r_id PRIMARY KEY AUTOINCREMENT
  • r_name
  • r_type (Breakfast, Lunch, Dinner)
  • r_tags (NOT Sure to use static list or DB-Table)
  • r_date
  • r_details
  • #In Recipes Table we will store Recipes Name, Recipes type the data and how to prepare the DISH also a photo of the dish, for the tags i am not sure if using a static list or Data-Base Table.
    Photo

  • p_id PRIMARY KEY AUTOINCREMENT
  • r_id FOREIGN KEY
  • p_name
  • #In Photo Table we will store the DISH photo by storing the jpeg file name linked to the r_id, and will be saved in a sub-folder in app-folder


    Ingredients_List

  • ing_id PRIMARY KEY AUTOINCREMENT
  • i_name
  • #In Ingredient Table we will store all the Ingredient Names, this Table will be used as (Drop-Down List) in the application.


    rec_ingredient

  • ing_id PRIMARY KEY AUTOINCREMENT
  • i_l_id
  • r_id
  • #In rec_ingredient Table we will store a links from the Recipes and Ingredients so we can list all ingredient for a Recipe.

First thing we will write in the application is the Main-Menu and other sub menus we may have in the application. (After posting this article Menus may change)

[ MAIN MENU ]
1. Add New Meal.
2. Ingredients Manager [will have a sub menu]
3. ??.
4. Show Recipes.(Meals) [will have a sub menu]
5. Recipes Information.) [ number or Recipes by date, number on tags, number of Ingredients .. ]
6. Data-Base Information.
7. Setting. [will have a sub menu]
9. Exit.


[ Show Recipes ]
1. Show All Recipes.
2. Show Recipes By Date.
3. Show Recipes By Ingredients.
4. Show Recipes By Tags.
5. Show Recipes By Name.

9. Exit.


[ SETTING MENU ]
1. Create the needed Tables.
2. Drop Tables.
3. Insert Dummy Data. (MUST be run after Tables Creation)
9. Exit.


[ INGREDIENT MENU ]
1. Show all Ingredient.
2. Add Ingredient.
3. Delete Ingredient.
4. Edit Ingredient.
9. Exit.

We can say that this is a blue-print of the application that we want to work on, everything is subject to change while working, since this is a personal application we will be flexible in changing, but in real life project development cycle we need to take an approval (From the Business Owner) on the project plan and design before we start working also to be very clear that : “Any changes in the scope of work may cost money and time”.

Next Post: In next post we will write the codes for the menu also we will create the Tables.



To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani




Python: SQlite Project – P1

January 21, 2020 1 comment


Learning : Python and Sqlite3
Subject: Sqlite3, Database functions ” Employee App” P1

One of the most important thing about writing applications is to save or store some Data for later use. This data could be simple as setting information or basic user information or can be a full records about something you need to keep, such as health data, or employee contacts or other projects data. To store a huge data we use a Data-Base, some databases are free and open to be downloaded from the internet, one of them is SQLITE3, in Python we can use the Sqlite for small and personal projects. In this post We will use the Sqlite to write a simple project for Employees.

As that our goal is to learn how to use Sqlite and python code to track our employees, and to keep every thing as simple as we can, we will collect only three piece of information that’s will be First Name, Last Name and the Salary.

Functions: In any application there must be several functions to complete our works and tasks that we need to perform, in our Employee System we need to perform these tasks:

1. Show the Data we have.
2. Insert New Employee.
3. Delete an Employee.
4. Editing Employee information.
5. Search for Employee.

This is the most important functions in any application, we will start working on the system and see how things goes on.

First we MUST Creating the data base and set the connection, here is the code to do this and we will call our database as test.db.

 # Create the database. 

import sqlite3, os

db_conn = sqlite3.connect ("test.db")    # set the data-base name

c = db_conn.cursor()  # set the connection


To create the Employee table we will write this code and run it only ONE Time.

 # Create the Employee Table. 

def create_tabels_() :    # to create tables.

    # employee table
    sql_s= "CREATE TABLE if not exists emp (emp_id INTEGER PRIMARY KEY AUTOINCREMENT,
fname text,lname text, pay integer)" c.execute(sql_s) db_conn.commit() print(input('\n .. Employee TABLE created.. Press any key .. '))


Since we are learning and playing with our code, we may need to drop the table for some reasons, so here is the code to Drop the table we will re-call the function if we need-so.

 # Function to DROP a Table. 

def drop_table(tname):

    c.execute("DROP TABLE {}".format(tname))
    db_conn.commit()


Now after the creating of the Table we need to feed it with some data so we can see the records. To do so we will run a function called dummy_data.

 # Function to INSERT Dummy data into the Employee Table. 


def dummy_data():
    """
        This Function will Insert 4 Dummy rows in the temp table, first record will set the emp_id to 1, the other
        record the emp_id will be AUTOINCREMENT.

        This Function to be run one time only.

    """
# First record will have the emp_id set as 1, other records will be AUTOINCREMENT.
    c.execute ("INSERT INTO emp (emp_id, fname,lname,pay) VALUES(:emp_id, :fname,
:lname, :pay)",{"emp_id":1,"fname":"James","lname":"Max", "pay":"2000"}) c.execute ("INSERT INTO emp (fname,lname,pay) VALUES(:fname,:lname, :pay)",
{"fname":"Robert","lname":"Ethan", "pay":"1500"}) c.execute ("INSERT INTO emp (fname,lname,pay) VALUES(:fname,:lname, :pay)",
{"fname":"Jack","lname":"Leo", "pay":"890"}) c.execute ("INSERT INTO emp (fname,lname,pay) VALUES(:fname,:lname, :pay)",
{"fname":"Sophia","lname":"Jack", "pay":"320"}) db_conn.commit() print(input('\n Dummy Data has been INSERTED\n\n .. Press any key .. '))


Main Menu To use the application we need a Menu to jump between the tasks in the app. Here is the Main-Menu, it will return the user selection.

 # The Main Menu. 

def menu():
    os.system("clear")
    print("\n\n      ::: The Menu :::")

    print("   1. Show the Data.")
    print("   2. Insert a New  Employee.")
    print("   3. Delete an Employee.")
    print("   4. Edit/Change employee data. ")
    print("   5. Search.")
    print("   6. Setting.")
    print("   7. Data-Base Information.")
    print("   9. Exit. ")

    uinput = input("\n     Enter a selection: ")

    return uinput


Here is the loop for the Menu and the user selection until (9. Exit) will be selected.

 # The Main Menu. 

while True :

    uinput = menu()

    if uinput == '1' :
        show_data()

    elif uinput =='2' :
        insert_emp ()

    elif uinput =='3' :
        delete_record()

    elif uinput =='4' :
        print("Edit")

    elif uinput =='5' :
        search_emp()

    elif uinput =='6' :
        setting_menu()

    elif uinput =='7' :
        #print("DataBase Information.")
        get_db_info()

    elif uinput =='9' :
        break

    else: # If the user select something out of the menu (Numbers or Character)
        print("  You need to select from the list")


Now we remember that we run the dummy_data() function (above) so we have four records in our Employee Table, so if we want to see the records we will select first option in the Main Menu: 1. Show the data. this will call a function called show_data() as in this screen shot.



The screen prompt will wait for an input of the number that present the task we want. So if we select No. 2 then we will get all the records in the table as this .. .



And here is the code behind this function..


Done with Part 1, in part 2 we will cover more functions to Search and Add records to the Table.


To Download my Python code (.py) files Click-Here




Follow me on Twitter..




By: Ali Radwani