programmeren

in python

Jaar 3 - Module 2 - Les 7: Bedrijfsopdracht & Database met Python benaderen

De komende weken gaan we...

 

  • Leren hoe je databases gebruikt om data op te slaan

vandaag gaan we...

 

  • Nadenken over je bedrijfsopdracht

vandaag gaan we...

 

  • Nadenken over je bedrijfsopdracht

De excel opdracht

  • Zoek iemand die ergens Excel voor gebruikt
  • Bekijk de Excelsheet goed, en maak een verslag:
    • Welke tabellen zitten er in de Excel
    • Welke formules worden gebruikt?
  • Vraag dan dingen aan de klant!
    • Welke dingen kunnen handiger?
    • Wat zou je er nog bij willen?
      • Bijv: grafieken
      • Of: tabellen koppelen
    • Zet ook de verbeteringen in je verslag
  • Maak dan de verbeteringen!

De database opdracht

  • Fase 0: Gebruik, in principe, dezelfde klant en data
    • Neem contact op met je klant
    • Vraag of ze nog eens meedoen

De database opdracht

  • Fase 0: Gebruik, in principe, dezelfde klant en data
    • Neem contact op met je klant
    • Vraag of ze nog eens meedoen
  • Fase 1: Bekijk je eind-Excelsheet en maak een verslag:
    • Hoe zou je deze tabellen en formules omzetten?
    • Welke Excel-dingen kun je nog niet in databases?
    • Zet dan de Excelsheet om

De database opdracht

  • Fase 0: Gebruik, in principe, dezelfde klant en data
    • Neem contact op met je klant
    • Vraag of ze nog eens meedoen
  • Fase 1: Bekijk je eind-Excelsheet en maak een verslag:
    • Hoe zou je deze tabellen en formules omzetten?
    • Welke Excel-dingen kun je nog niet in databases?
    • Zet dan de Excelsheet om
  • Fase 2: 
    • Vraag de klant om ideeen voor verbeteringen
    • En/Of verzin die zelf!
    • Zet ook de verbeteringen in je verslag
    • Maak dan de verbeteringen!

Groepjes:

  • Groepje 1 bestaat uit Kacem en Sabah - Betalingsgegevens
  • Groepje 2 bestaat uit Reynaldo en Marielle - Planning kinderopgang 
  • Groepje 3 bestaat uit Sivan en Anouar I. - Betalingsdata
  • Groepje 4 bestaat uit Rik en Edlir - Geen klant
  • Groepje 5 bestaat uit Ismail en Rohan - Geen klant
  • Groepje 6 bestaat uit Anouar A. en Sven - Ticketdata
  • Groepje 7 bestaat uit Kaoutar en Safouane - Data over leerlingen
  • Groepje 8 bestaat uit Yasin en Lasse - Kledingdata
  • Groepje 9 bestaat uit Raymond en Uandi - Werkurendata
  • Groepje 10 bestaat uit Edgar en Ruben - Klant?Capoeiraschooldata

De opdracht - Fases

Fase 0 - Deadline 29 januari

  • Benader je klant opnieuw
  • Vraag of die nog een keer meedoet, voor vrijdag!
  • Heb je geen klant meer? Dan help ik je er eentje vinden

De opdracht - Fases

vandaag gaan we...

 

  • Nadenken over je bedrijfsopdracht

vandaag gaan we...

 

  • Nadenken over je bedrijfsopdracht

  • Leren hoe we Python en databases kunnen combineren

database & Python

We kunnen nu data in een database opslaan.

database & Python

We kunnen nu data in een database opslaan. Maar een klant gaat natuurlijk geen queries opschrijven om bij data te komen!

database & Python

We kunnen nu data in een database opslaan. Maar een klant gaat natuurlijk geen queries opschrijven om bij data te komen!

 

Daarvoor moeten we een mooie user interface maken, met Python.

In Python kunnen we ook een database benaderen

database & Python

In Python kunnen we ook een database benaderen

database & Python

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

In Python kunnen we ook een database benaderen

database & Python

Laad de database module in

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

In Python kunnen we ook een database benaderen

database & Python

We schrijven weer gewone Python, dus we kunnen alle Pythondingen doen, zoals printen.

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

In Python kunnen we ook een database benaderen

database & Python

Maak contact met de database

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

In Python kunnen we ook een database benaderen

database & Python

Maak contact met de database

 

Pas voor nu de naam niet aan!

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

In Python kunnen we ook een database benaderen

database & Python

Maak een nieuwe cursor

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

In Python kunnen we ook een database benaderen

database & Python

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

Schrijf de query in de code

tussen 3 x 2aanhalingstekens

In Python kunnen we ook een database benaderen

database & Python

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

Voer de query uit

In Python kunnen we ook een database benaderen

database & Python

import sqlite3

print("Hallo allemaal!")

connectie = sqlite3.connect('SQLite_Python.db')

cursor = connectie.cursor()
query = """
INSERT INTO personen
values(4, 'Berthe', 'M');"""

cursor.execute(query)
cursor.close()
connectie.commit()
connectie.close()

Sluit netjes af

}

demo

We kunnen nu meerdere keren hetzelfde nummer invoeren zonder fout. 

Autoincrement

We kunnen nu meerdere keren hetzelfde nummer invoeren zonder fout. 

Autoincrement

We kunnen nu meerdere keren hetzelfde nummer invoeren zonder fout. 

Autoincrement

Wie is hier de echte nummer 4?

We kunnen nu meerdere keren hetzelfde nummer invoeren zonder fout. 

Autoincrement

Wie is hier de echte nummer 4?

 

Berth?

 

We kunnen nu meerdere keren hetzelfde nummer invoeren zonder fout. 

Autoincrement

Wie is hier de echte nummer 4?

 

Berth? of Karel?

Om dit probleem op te lossen kunnen we een auto-increment gebruiken.

Autoincrement

Wie is hier de echte nummer 4?

 

Berth? of Karel?

Om dit probleem op te lossen kunnen we een auto-increment gebruiken. Die maakt het nummer voor jou aan!

Autoincrement

Wie is hier de echte nummer 4?

 

Berth? of Karel?

demo

Om dit probleem op te lossen kunnen we een auto-increment gebruiken. Die maakt het nummer voor jou aan!

Autoincrement

CREATE TABLE blijft hetzelfde

CREATE TABLE personen(
  Persoonsnummer INTEGER PRIMARY KEY AUTOINCREMENT,
  Naam TEXT,
  Geslacht TEXT
);

Om dit probleem op te lossen kunnen we een auto-increment gebruiken. Die maakt het nummer voor jou aan!

Autoincrement

Achter het nummer komt nu 

INTEGER PRIMARY KEY AUTOINCREMENT

CREATE TABLE personen(
  Persoonsnummer INTEGER PRIMARY KEY AUTOINCREMENT,
  Naam TEXT,
  Geslacht TEXT
);

Om dit probleem op te lossen kunnen we een auto-increment gebruiken. Die maakt het nummer voor jou aan!

Autoincrement

Achter het nummer komt nu 

INTEGER PRIMARY KEY AUTOINCREMENT

CREATE TABLE personen(
  Persoonsnummer INTEGER PRIMARY KEY AUTOINCREMENT,
  Naam TEXT,
  Geslacht TEXT
);

Let op!

INTEGER moet volledig geschreven

Om dit probleem op te lossen kunnen we een auto-increment gebruiken. Die maakt het nummer voor jou aan!

Autoincrement

De andere kolommen blijven ook hetzelfde

CREATE TABLE personen(
  Persoonsnummer INTEGER PRIMARY KEY AUTOINCREMENT,
  Naam TEXT,
  Geslacht TEXT
);

Shell demo & uitleg hier

Shell

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Verwelkom de gebruiker

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Begin een loop bij ja of Ja

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Zolang het antwoord ja is

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Vraag om naam en geslacht

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Maak er een query van met een f-string

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Gebruiker kan nog een naam invoeren

Data invoeren uit Python

Nu we een autoincrement hebben ingesteld kunnen we data invoeren vanuit Python.

print("Welkom bij dit programma!")
print("Je kan personen opslaan in onze database")
antwoord = input("Wil je een naam invoeren?")

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""
  print(query)

  antwoord = input("Wil je nog een naam invoeren?")
  
print('Dankjewel voor het invoeren!')

Klaar?

Zeg gebruiker gedag!

demo

Data invoeren uit Python

Nu maken we een echte query ipv alleen printen

Data invoeren uit Python

Nu maken we een echte query ipv alleen printen:

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  connectie = sqlite3.connect('SQLite_Python.db')
  cursor = connectie.cursor()
  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""

  cursor.execute(query)
  cursor.close()
  connectie.commit()
  connectie.close()

  antwoord = input("Wil je nog een naam invoeren?")

Data invoeren uit Python

Nu maken we een echte query ipv alleen printen:

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  connectie = sqlite3.connect('SQLite_Python.db')
  cursor = connectie.cursor()
  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""

  cursor.execute(query)
  cursor.close()
  connectie.commit()
  connectie.close()

  antwoord = input("Wil je nog een naam invoeren?")

Maak de query hier

Data invoeren uit Python

Nu maken we een echte query ipv alleen printen:

while antwoord == 'Ja' or antwoord == 'ja':
  naam = input("Welke naam wil je invoeren?")
  geslacht = input("Wat is het geslacht?")

  connectie = sqlite3.connect('SQLite_Python.db')
  cursor = connectie.cursor()
  query = f"""INSERT INTO personen (Naam, Geslacht)
  values('{naam}', '{geslacht}');"""

  cursor.execute(query)
  cursor.close()
  connectie.commit()
  connectie.close()

  antwoord = input("Wil je nog een naam invoeren?")

Voer hier de query uit

demo

demo

tips vooraf!!!

Denk aan de gastles van mw. Geenen van voor de kerstvakantie en

test je codes goed!

 

tips vooraf!!!

Denk aan de gastles van mw. Geenen van voor de kerstvakantie en

test je codes goed!

 

Lever je code pas in als je hebt gezien wat de uitkomst is en die hebt gecontroleerd.

 

tips vooraf!!!

Denk aan de gastles van mw. Geenen van voor de kerstvakantie en

test je codes goed!

 

Lever je code pas in als je hebt gezien wat de uitkomst is en die hebt gecontroleerd.

 

Probeer ook verschillende namen en waardes uit!

 

Zodadelijk in repl.it

opdrachten in repl.it

opdrachten in repl.it

opdrachten in repl.it

opdrachten in repl.it

  • Verplicht zijn de opdrachten van les 6 (01 t/m 02)
  • Verplicht zijn de opdrachten van les 7 (01 t/m 02)
  • Ben je al klaar?
    • De extra opdrachten van de andere lessen kun je ook nog maken!
    • Of.... Mail alvast je klant!
  • Deadline: dinsdag 20:00

 

opdrachten in repl.it

  • Bij extra opdrachten staat een (X)
  • Dit zijn de regels:
    • Opdrachten zonder (X) zijn verplicht, die maak je allemaal.
    • Opdachten zonder (X) niet af in de les? Dan is het huiswerk
    • Die tellen mee voor je inzet.
  • Klaar met de opdrachten zonder (X) in de les? Dan ga je door met die met een (X)

 

  • Samenwerken:
    • Overleggen mag
    • Antwoorden voorzeggen NIET
    • Overtypen/multiplayer ook NIET

opdrachten in repl.it

Python Klas 3 - Module 2 - Les 7

By Felienne

Python Klas 3 - Module 2 - Les 7

Leerdoel Module: werken met databases. Lesdoel: SQL & Python combineren

  • 1,134