programmeren

in python

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

Planning

 

  • Deze week (9 - 13 januari)

    • afronden werkbladen t/m 7

    • start eindopdracht sql
       

  • Volgende week (16 - 20 januari)

    • eindopdracht sql afronden

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
);

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

tips vooraf!!!

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

 

tips vooraf!!!

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?
    • Maak opdracht 3 van les 7
  • Deadline: woensdag (morgen) 12: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 Ebbens

Python Klas 3 - Module 2 - Les 7

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

  • 186