Last active
August 29, 2015 13:58
-
-
Save hersche/9989957 to your computer and use it in GitHub Desktop.
python3 database-example (well commented in german)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
was passiert wenn der name einen umlaut enthält ?