V tomto příkladě se slovíčka ukládají do SQLite databáze vocabulary.db do tabulky vocabulary. Při spuštění programu se nejprve vytváří spojení s databází a poté se kontroluje, zda existuje tabulka pro slovíčka – pokud ne, je vytvořena. Poté se spouští hlavní smyčka programu, kde je možné přidávat slovíčka a trénovat.
Ukládání slovíček je provedeno pomocí SQL příkazu INSERT INTO a čtení slovíček pomocí příkazu SELECT. Při ukládání slovíček je důležité použít metodu commit() pro uložení změn do databáze.
Pro složitější operace s databázemi může být vhodné využít některého ORM (Object-Relational Mapping) nástroje, jako je například SQLAlchemy.
V tomto programu máme slovník vocabulary, kde klíči jsou anglická slova a hodnotami jsou české překlady. V hlavní smyčce je pět možností:
- Přidání nového slovíčka, kde uživatel zadá anglické slovíčko a jeho český překlad.
- Trénink slovíček, kde program postupně vypisuje anglická slovíčka a uživatel má zadat jejich české překlady. Program pak zkontroluje, zda je odpověď správná.
- Úpravu již existujících slovíček. Tuto funkci můžete implementovat tak, že uživatele se zeptáte na slovíčko, které chce upravit, a poté mu umožníte zadat nový překlad.
- Mazání slovíček. Tato funkce může funguje tak, že se uživatelovi zobrazí seznam všech slovíček a on si vybere to, které chce odstranit. Zde jsme přidali funkci delete_word, která získá anglické slovíčko od uživatele a odstraní ho z databáze pomocí SQL příkazu DELETE.
- Ukončení programu.
import sqlite3
def add_word(cursor, conn):
en = input("Zadejte anglické slovíčko: ")
cz = input("Zadejte český překlad: ")
cursor.execute("INSERT INTO vocabulary VALUES (?, ?)", (en, cz))
conn.commit()
print("Slovíčko bylo přidáno.")
def train(cursor):
cursor.execute("SELECT * FROM vocabulary")
words = cursor.fetchall()
if not words:
print("Nejsou dostupné žádné slovíčka pro trénink.")
else:
for en, cz in words:
print(f"Jak se do češtiny překládá slovíčko '{en}'?")
answer = input("Váš překlad: ")
if answer == cz:
print("Správně!")
else:
print(f"Špatně, správně je '{cz}'.")
def edit_word(cursor, conn):
en = input("Zadejte anglické slovíčko, které chcete upravit: ")
cursor.execute("SELECT * FROM vocabulary WHERE english = ?", (en,))
word = cursor.fetchone()
if word is None:
print("Toto slovíčko v seznamu neexistuje.")
else:
print(f"Aktuální překlad slovíčka '{en}' je '{word[1]}'.")
cz = input("Zadejte nový překlad: ")
cursor.execute("UPDATE vocabulary SET czech = ? WHERE english = ?", (cz, en))
conn.commit()
print("Překlad slovíčka byl aktualizován.")
def delete_word(cursor, conn):
en = input("Zadejte anglické slovíčko, které chcete smazat: ")
cursor.execute("DELETE FROM vocabulary WHERE english = ?", (en,))
conn.commit()
print("Slovíčko bylo smazáno.")
conn = sqlite3.connect('vocabulary.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS vocabulary (english TEXT, czech TEXT)")
print("Co chcete dělat? Přidat nové slovíčko (1), trénovat (2), upravit slovíčko (3), smazat slovíčko (4), nebo ukončit program (0)?")
choice = input("Vaše volba: ")
while True:
if choice == "1":
add_word(cursor, conn)
elif choice == "2":
train(cursor)
elif choice == "3":
edit_word(cursor, conn)
elif choice == "4":
delete_word(cursor, conn)
elif choice == "0":
print("Program bude ukončen.")
break
else:
print("Zadali jste nesprávnou volbu. Zkuste to znovu.")