Skip to content

Instantly share code, notes, and snippets.

@hersche
Last active August 29, 2015 13:58
Show Gist options
  • Save hersche/9989957 to your computer and use it in GitHub Desktop.
Save hersche/9989957 to your computer and use it in GitHub Desktop.
python3 database-example (well commented in german)
# -*- coding: utf-8 -*-
import sqlite3, os.path, datetime, sys
#grundsätzlich wird angenommen, dass das db-file da ist..
fileExist = True
#...dann wird das überprüft..
if os.path.isfile('example.db') == False:
#..und ggf umgestellt..
fileExist = False
#..denn sqlite3.connect erstellt immer ein file!
db = sqlite3.connect('example.db')
#aber wir brauchen ja den cursor, um die db initialisieren zu können.
c = db.cursor()
if fileExist == False:
#wenn das file nun vorher nicht vorhanden war, existierte auch die db und dh die tabelle noch nicht.
#folglich erstellen wir sie unter dem namen "players". dies ist einmalig pro db, da beim zweimaligen versuch das programm abschmiert,
#da die gleiche tabelle nicht 2 mal existieren kann..
# date ist ein textfeld
# playername ist auch text
# score ist real, also ein 0000.00-999999.99
c.execute('''CREATE TABLE players (date text, playername text, score real)''')
#commit, dann sind wir sicher, dass es speichert
db.commit()
#jaja, solange True==True ist, ist True True.. :)
while True:
#wir probieren mal..
try:
#ist der input des users wohl eine zahl und nur eine zahl?
menu = int(input("What 2 do? (1 = Delete, 2 = Show players, 3 = insert playa, 4 = update playa, 5 = ciao bella)"))
except:
#weil:
print("Konnte keine Zahl parsen, flog auf die fresse, bin beleidigt und mache jetzt gar nichts!")
continue
if(menu==1):
#deletebefehl
name = input("Sag mir den Namen des Spielers!! ")
c.execute("DELETE FROM players WHERE playername=?", (name, ))
db.commit()
elif(menu==2):
#leute aus einer liste ausgeben, sortiert
c.execute('select * from players order by score')
for row in c:
print(row)
elif(menu==3):
#jemanden hinzufügen
player = input("Playername: ")
score = int(input("Score: "))
c.execute("INSERT INTO players VALUES (?,?,?)", (datetime.datetime.now(), player, score))
db.commit()
elif(menu==4):
#update (veränderungs)-befehl.. mensch beachte vieleicht die veränderten select-abfragen ;)
#name soll der alte name des users sein - dies ist unser suchkriterium
name = input("Gib mir den ALTEN Benutzernamen: ")
# eine abfrage, um den player zu finden.. anhand des namens
c.execute('select * from players where playername=?', (name, ))
for row in c:
#aha! die row ist ein array!!
print(str(row[1]) + " hat "+str(row[2])+" Punkte")
#abfragen für die neuen werte
nname = input("Gib mir den neuen Namen ")
nscore = input("Gib mir den neuen Score: ")
#dann updaten.. der befehl spricht für sich
c.execute("UPDATE players SET playername=?,score=? WHERE playername=?", (nname, nscore, name))
#...und speichern
db.commit()
#nochmal abfrage..
c.execute('select * from players where playername=?', (nname, ))
for row in c:
#wie hat sich der name den nun verändert? aja, so..
print("changing name from "+name+" to "+str(row[1]))
elif(menu==5):
print("Ciao bella")
#...und tschüss.. so wie gewollt (status 0)
sys.exit(0)
@mherweg
Copy link

mherweg commented May 9, 2015

was passiert wenn der name einen umlaut enthält ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment