Files
python_skripte/my_movies/database.py

141 lines
6.7 KiB
Python

import sqlite3, os, argv
class db_work:
def __init__(self,db_file = str ) -> None:
self.db_file = db_file
self.script_folder = os.path.dirname(os.path.realpath(__file__))
def create_db(self):
if not os.path.exists(self.db_file):
with sqlite3.connect(self.db_file) as con_db:
cursor = con_db.cursor()
sql_code = """
CREATE TABLE IF NOT EXISTS movies(
'id' INTEGER PRIMARY KEY AUTOINCREMENT,
'name' TEXT,
'filmgenres' TEXT,
'year' TEXT,
'format',
'persönlich' TEXT
); """
cursor.execute(sql_code)
sql_code = """
CREATE TABLE IF NOT EXISTS filmgenres(
'genre' TEXT PRIMARY KEY,
'beschreibung' TEXT
); """
cursor.execute(sql_code)
sql_code = """
INSERT INTO filmgenres(genre, beschreibung)
VALUES
( 'horror', 'ist ein Genre der spekulativen Fiktion, das verängstigen, erschrecken oder verekeln soll.Oft kann die zentrale Bedrohung eines Werkes des Horrors als Metapher für größere Ängste einer Gesellschaft interpretiert werden.'),
( 'action', 'Der Actionfilm (von engl. action: Tat, Handlung, Bewegung) ist ein Filmgenre des Unterhaltungskinos, in welchem der Fortgang der äußeren Handlung von zumeist spektakulär inszenierten Kampf- und Gewaltszenen vorangetrieben und illustriert wird. Es geht eher um stimulierende Aktionen als um inhaltliche Zusammenhänge, empathisches Miterleben der Gefühlswelt der Protagonisten oder künstlerisch-ästhetische Bildwelten. Hauptbestandteile von Actionfilmen sind daher meist aufwendig gedrehte Stunts, Nahkampf-Szenen, Schießereien, Explosionen und Verfolgungsjagden. '),
( 'science-fiction', 'Die Darstellung spekuliert mit wissenschaftlichen Fakten und Vorausdeutungen auf zukünftig Mögliches.'),
( 'drama', 'Das Drama ist nach antiker Definition eine Gattung der Dichtung und bezeichnet eine Handlung mit verteilten Rollen. ');
"""
cursor.execute(sql_code)
con_db.commit()
return "db create"
else:
return "db exists"
def add_value_db(self):
with sqlite3.connect(self.db_file) as con_db:
cursor = con_db.cursor()
while True:
##Abfrage Name
name = input("Name des Films: ")
if not name:
break
##Abfrage Genre
while True:
movie_genre = input("Genre: ")
sql = """Select * from filmgenres where genre = '{genre}'""".format(genre=movie_genre)
cursor.execute(sql)
if cursor.fetchone():
print("Genre existiert!")
break
else:
print("Genre existiert nicht gib es bitte nochmal ein :")
sql = """Select genre from filmgenres"""
print("Folgende Genres sind angelegt :")
self.ausgabe_abfrage(sql_abfrage="""Select genre from filmgenres""")
#Abfrage Jahr
while True:
movie_year = input("Jahr: ")
if len(str(movie_year)) == 4 and movie_year.isdigit() is True:
break
else:
print("Das Jahr muss 4 Zeichen haben und aus Zahlen bestehen.")
#Abfrage Format
while True:
format = input("Format :")
if format == "blue-ray" or format == "dvd" or format == "platte" or format == "sd":
break
else:
print("blue-ray", "dvd", "platte", "sd")
#Abfrage Meinung
per_info = input("Meinung : ").lower()
sql = """Select * from movies WHERE name = '{name}';""".format(name=name)
cursor.execute(sql)
if not cursor.fetchone():
print("Film wird angelgt ")
self.speicher_aktion(movie=name, filmgenre=movie_genre, year=movie_year, persönlich=per_info, format=format)
else:
print("Film bereits vorhanden !")
print("Eingabevorgang wurde beendet.")
def speicher_aktion(self, movie = str, filmgenre = str, year = str, persönlich = str, format = str):
with sqlite3.connect(self.db_file) as verbindung:
cursor = verbindung.cursor()
sql = """INSERT INTO movies(name, filmgenres, year, format, 'persönlich' )
VALUES ( '{movie}', '{filmgenre}', '{year}', '{format}','{persönlich}' );""".format(
movie=movie,
filmgenre=filmgenre,
year=year,
format = format,
persönlich=persönlich)
cursor.execute(sql)
def ausgabe_abfrage(self, sql_abfrage):
with sqlite3.connect(self.db_file) as daten:
try:
zeiger = daten.cursor()
zeiger.execute(sql_abfrage)
for datensatz in zeiger:
for wert in datensatz:
wert = str(wert)
print('| ', wert, " " * (9 - len(wert)), end="")
print("|")
except sqlite3.OperationalError:
print("Tabelle nicht gefunden!")
except:
print("Daten konnten nicht bearbeitet werden!")
if __name__ == "__main__":
script_folder = os.path.dirname(os.path.realpath(__file__))
db_file_full = script_folder + os.sep + "my_moviedb.db"
my_db = db_work(db_file=db_file_full)
print(my_db.create_db())
for query in argv.sys.argv[1:]:
if query == '-q':
if argv.argv_value('-q') is None:
my_db.ausgabe_abfrage(sql_abfrage="""SELECT * FROM movies;""")
else:
my_db.ausgabe_abfrage(sql_abfrage="""Select * from movies WHERE name like '%{search}%';""".format(search=argv.argv_value('-q')))
if query == '-a':
my_db.add_value_db()
#my_db.create_db()
#add_value_to_db = my_db.add_value_db()
#print (add_value_to_db)