9th day of python challenges 139-142

This commit is contained in:
abd.shallal
2019-08-06 16:41:37 +03:00
parent 81d4fd37bf
commit 8008cd68d9
9 changed files with 716 additions and 128 deletions

View File

@@ -1,12 +1,54 @@
import sqlite3
from sqlite3 import Error
with sqlite3.connect('python-by-example') as db:
cursor = db.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS employees(
id integer PRIMARY KEY,
name text NOT NULL,
dept text NOT NULL,
salary integer);""")
cursor.execute("""INSERT INTO employees(id,name,dept,salary)
VALUES("1","Bob","Sales","25000")""")
db.commit()
def create_connection(db):
try:
conn = sqlite3.connect(db)
return conn
except Error as e:
print(e)
return None
def create_phone_book_table(conn):
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS PhoneBook (
id integer PRIMARY KEY,
first_name text NOT NULL,
surname text,
phone integer
); """
cur = conn.cursor()
cur.execute(sql_create_projects_table)
cur.close()
def create_phone_book_record(conn, phone_book):
sql = ''' INSERT INTO PhoneBook(first_name,surname,phone)
VALUES(?,?,?) '''
cur = conn.cursor()
cur.execute(sql, phone_book)
cur.close()
return cur.lastrowid
def main():
conn = create_connection('python-by-example.db')
with conn:
create_phone_book_table(conn)
phone_book_record_1 = ('Simon', 'Howels', '01223349752')
phone_book_record_2 = ('Karen', 'Philips', '01954295773')
phone_book_record_3 = ('Darren', 'Smith', '01583749012')
phone_book_record_4 = ('Anne', 'Jones', '01323567322')
phone_book_record_5 = ('Mark', 'Smith', '01223855534')
create_phone_book_record(conn, phone_book_record_1)
create_phone_book_record(conn, phone_book_record_2)
create_phone_book_record(conn, phone_book_record_3)
create_phone_book_record(conn, phone_book_record_4)
create_phone_book_record(conn, phone_book_record_5)
main()

View File

@@ -0,0 +1,84 @@
import sqlite3
from sqlite3 import Error
def create_connection(db):
try:
conn = sqlite3.connect(db)
return conn
except Error as e:
print(e)
return None
def show_all(conn):
cur = conn.cursor()
cur.execute("SELECT * FROM PhoneBook")
rows = cur.fetchall()
for row in rows:
print(row)
def view_phone_book(conn, phone_id):
cur = conn.cursor()
cur.execute(str("SELECT * FROM PhoneBook WHERE id = " + str(phone_id)))
print(cur.fetchone())
cur.close()
def add_phone_book(conn, phone_book):
sql = ''' INSERT INTO PhoneBook(first_name,surname,phone)
VALUES(?,?,?) '''
cur = conn.cursor()
cur.execute(sql, phone_book)
print(cur.fetchone())
cur.close()
def surname_in_phone_book(conn, surname):
sql = "SELECT * FROM PhoneBook WHERE surname like '%" + surname + "%'"
cur = conn.cursor()
cur.execute(sql)
rows = cur.fetchall()
for row in rows:
print(row)
def delete_phone_book(conn, phone_id):
cur = conn.cursor()
cur.execute(str("DELETE FROM tasks WHERE id = " + str(phone_id)))
cur.close()
def main():
conn = create_connection('python-by-example.db')
with conn:
print('\n\nMain Menu\n\n\n')
print('1) View phone book ')
print('2) Add to phone book')
print('3) Search for surname')
print('4) Delete person from phone book')
print('5) Quit')
operation_ask = int(input('Enter your selection : '))
if operation_ask == 1:
ask_id = int(input('Enter id to show : '))
view_phone_book(conn, ask_id)
elif operation_ask == 2:
ask_name = str(input('Enter name : '))
ask_surname = str(input('Enter surname : '))
ask_phone = str(input('Enter phone : '))
phone_book = (ask_name, ask_surname, ask_phone)
add_phone_book(conn, phone_book)
elif operation_ask == 3:
ask_surname = str(input('Enter surname to show : '))
surname_in_phone_book(conn, ask_surname)
elif operation_ask == 4:
ask_id = int(input('Enter id to delete : '))
delete_phone_book(conn, ask_id)
else:
print('Invalid input, please try again.')
main()

View File

@@ -0,0 +1,92 @@
import sqlite3
from sqlite3 import Error
def create_connection(db):
try:
conn = sqlite3.connect(db)
return conn
except Error as e:
print(e)
return None
def create_author_table(conn):
try:
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS authors (
name text PRIMARY KEY,
birth_place text
); """
cur = conn.cursor()
cur.execute(sql_create_projects_table)
cur.close()
except Error as e:
print(e)
def create_books_table(conn):
sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS books (
id integer PRIMARY KEY,
title text NOT NULL,
author text,
published_date text
); """
cur = conn.cursor()
cur.execute(sql_create_projects_table)
cur.close()
def insert_to_authors(conn, authors):
cur = conn.cursor()
for author in authors:
sql = 'INSERT INTO authors (name, birth_place) VALUES (?, ?)'
cur.execute(sql, author)
conn.commit()
cur.close()
def insert_to_books(conn, books):
cur = conn.cursor()
for book in books:
sql = 'INSERT INTO books (title, author, published_date) VALUES (?, ?, ?)'
cur.execute(sql, book)
print(cur.fetchone())
cur.close()
def main():
conn = create_connection('BookInfo.db')
with conn:
create_author_table(conn)
create_books_table(conn)
authors = [
['Agatha Christie', 'Torquay'],
['Cecelia Ahern', 'Dublin'],
['J.K, Rowling', 'Bristol'],
['Oscar Wilde', 'Dublin']
]
insert_to_authors(conn, authors)
books = [
['De Profundis', 'Oscar Wilde', '1905'],
['Harry Potter and the chamber of secrets', 'J.K. Rowling', '1998'],
['Harry Potter and the prisoner or Azkaban', 'J.K. Rowling', '1999'],
['Lyrebird', 'Cecelia Ahren', '2017'],
['Murder At the Orient Express', 'Agatha Christie', '1934'],
['Perfect', 'Cecelia Ahren', '2017'],
['The marble collector', 'Cecelia Ahren', '2016'],
['The murder on the links', 'Agatha Christie', '1923'],
['The picture of Dorian Gray', 'Oscar Wilde', '1890'],
['The secret adversary', 'Agatha Christie', '1921'],
['The seven dials mystery', 'Agatha Christie', '1929'],
['The year i met you', 'Cecelia Ahren', '2014']
]
insert_to_books(conn, books)
main()

View File

@@ -0,0 +1,50 @@
import sqlite3
from sqlite3 import Error
def create_connection(db):
try:
conn = sqlite3.connect(db)
return conn
except Error as e:
print(e)
return None
def show_all_authors(conn):
cur = conn.cursor()
cur.execute("SELECT * FROM authors")
rows = cur.fetchall()
for row in rows:
print(row)
def search_place_birth(conn, place):
cur = conn.cursor()
cur.execute(str("select books.title, books.published_date, authors.name from authors join books on books.author = authors.name where authors.birth_place = '" + place + "'"))
rows = cur.fetchall()
for row in rows:
print(row)
cur.close()
def main():
conn = create_connection('BookInfo.db')
with conn:
print('\n\nMain Menu\n\n\n')
print('1) List authors ')
print('2) Search place of birth')
print('3) Quit')
operation_ask = int(input('Enter your selection : '))
if operation_ask == 1:
show_all_authors(conn)
elif operation_ask == 2:
ask_place = str(input('Enter place of birth : '))
search_place_birth(conn, ask_place)
else:
print('Invalid input, please try again.')
main()

View File

@@ -0,0 +1,192 @@
import sqlite3
from sqlite3 import Error
""""""""""""""""""" CREATING SQLITE DATABASE """""""""""""""""""""
def create_connection(db_file):
""" create a database connection to the SQLite database
specified by db_file
:param db_file: database file
:return: Connection object or None
"""
try:
conn = sqlite3.connect(db_file)
return conn
except Error as e:
print(e)
# finally:
# conn.close()
return None
# if __name__ == '__main__':
# create_connection('python-by-example.db')
"""""""""""""""" CREATE TABLE """""""""""""""
def create_table(conn, create_table_sql):
""" create a table from the create_table_sql statement
:param conn: Connection object
:param create_table_sql: a CREATE TABLE statement
:return:
"""
try:
c = conn.cursor()
c.execute(create_table_sql)
c.close()
except Error as e:
print(e)
def create_project(conn, project):
"""
Create a new project into the projects table
:param conn:
:param project:
:return: project id
"""
sql = ''' INSERT INTO projects(name,begin_date,end_date)
VALUES(?,?,?) '''
cur = conn.cursor()
cur.execute(sql, project)
cur.close()
return cur.lastrowid
def create_task(conn, task):
"""
Create a new task
:param conn:
:param task:
:return:
"""
sql = ''' INSERT INTO tasks(name,priority,status_id,project_id,begin_date,end_date)
VALUES(?,?,?,?,?,?) '''
cur = conn.cursor()
cur.execute(sql, task)
cur.close()
return cur.lastrowid
def select_all_tasks(conn):
"""
Query all rows in the tasks table
:param conn: the Connection object
:return:
"""
cur = conn.cursor()
cur.execute("SELECT * FROM tasks")
rows = cur.fetchall()
for row in rows:
print(row)
def select_task_by_priority(conn, priority):
"""
Query tasks by priority
:param conn: the Connection object
:param priority:
:return:
"""
cur = conn.cursor()
cur.execute("SELECT * FROM tasks WHERE priority=?", (priority,))
rows = cur.fetchall()
for row in rows:
print(row)
def update_task(conn, task):
"""
update priority, begin_date, and end date of a task
:param conn:
:param task:
:return: project id
"""
sql = ''' UPDATE tasks
SET priority = ? ,
begin_date = ? ,
end_date = ?
WHERE id = ?'''
cur = conn.cursor()
cur.execute(sql, task)
cur.close()
def delete_task(conn, task):
"""
delete a task
:param conn:
:param task:
:return: null
"""
cur = conn.cursor()
cur.execute(str("DELETE FROM tasks WHERE id = " + str(task)))
cur.close()
def main():
database = 'python-by-example.db'
# sql_create_projects_table = """ CREATE TABLE IF NOT EXISTS projects (
# id integer PRIMARY KEY,
# name text NOT NULL,
# begin_date text,
# end_date text
# ); """
#
# sql_create_tasks_table = """CREATE TABLE IF NOT EXISTS tasks (
# id integer PRIMARY KEY,
# name text NOT NULL,
# priority integer,
# status_id integer NOT NULL,
# project_id integer NOT NULL,
# begin_date text NOT NULL,
# end_date text NOT NULL,
# FOREIGN KEY (project_id) REFERENCES projects (id)
# );"""
#
# # create a database connection
conn = create_connection(database)
# if conn is not None:
# # create projects table
# create_table(conn, sql_create_projects_table)
# # create tasks table
# create_table(conn, sql_create_tasks_table)
# else:
# print("Error! cannot create the database connection.")
with conn:
# # create a new project
# project = ('Cool App with SQLite & Python', '2015-01-01', '2015-01-30');
# project_id = create_project(conn, project)
#
# # tasks
# task_1 = ('Analyze the requirements of the app', 1, 1, project_id, '2015-01-01', '2015-01-02')
task_2 = ('Confirm with user about the top requirements', 1, 1, 1, '2015-01-03', '2015-01-05')
#
# # create tasks
# create_task(conn, task_1)
create_task(conn, task_2)
# update_task(conn, (2, '2015-01-04', '2015-01-06',2))
# delete_task(conn, 2)
# print("1. Query task by priority:")
# select_task_by_priority(conn, 1)
#
# print("2. Query all tasks")
# select_all_tasks(conn)
if __name__ == '__main__':
main()