Ich bin momentan dabei mir eine Art Katalog zu bauen. Am Anfang versuchte ich das ganze in einer Excel Tabelle zu speichern was leider nach hinten los ging. Dann kam mir die glorreiche Idee es mit pickle zu versuchen. Ich habe sehr lange nichts mehr geschrieben. Ich hoffe ihr könnt mir meinen katastrophalen Stil verzeihen. Das Problem ist momentan folgendes. Das ganze ist mit hilfe einer Liste aufgebaut. Diese hat pro "Datensatz" die Form
Hersteller,Artikelnummer,Artikelbeschreibung,preisEK,preisVK.
Nun ja das hinzufügen und entfernen von der Liste funktioniert soweit. Auch speichert mir das script das ganze per pickle und lädt es auch wieder korrekt. nur beim Aufruf von find() schmeißt er mir willkürlichen Wirrwarr auf den Bildschirm. Gewollt ist allerdings nur Einträge auszugeben die auch der gewünschten Form entsprechen so das quasi eine Auflistung aller Artikel von einem Hersteller oder alle Artikel mit der Beschreibung "bliblablub".
Ich hoffe ihr könnt einige Fehler finden und mich darauf hinweisen. Wie gesagt es ist das erste mal seit langem. Solltet ihr eine Idee für einen besseren Aufbau der Datensätze haben wäre ich froh darüber wenn ihr es mir mitteilt.
Hier nun der Code oder besser gesagt Kot
Code: Alles auswählen
# -*- coding: utf-8 -*-
import cPickle as pickle
import tkinter
################################################################################################
def addtodatabase(Hersteller, Artikelnummer, Artikelbezeichnung, PreisEK, PreisVK, data):
if Artikelnummer in data:
print ("Element bereits vorhanden")
temp1 = data.index(Artikelnummer)
print (data[temp1-1], " ", data[temp1], " ",data[temp1+1], " ", data[temp1+2], " ", data[temp1+3])
else:
data += (Hersteller, Artikelnummer, Artikelbezeichnung, PreisEK, PreisVK)
return(data)
###############################################################################################
###############################################################################################
def delfromdatabase(Artikelnummer,data):
if Artikelnummer not in data:
print ("Element nicht gefunden")
else:
temp1 = data.index(Artikelnummer)
del data[(temp1-1):(temp1+4)]
return (data)
###############################################################################################
def find(Suchwort,Typ, data): #TYP DER ANGABE 1=Hersteller 2=Artikelnummer 3=Artikelbezeichnung
if Suchwort in data:
if Typ == "1":
for Suchwort in data:
print ("Element vorhanden")
temp1 = data.index(Suchwort)
print (data[temp1], "|", data[temp1+1], "|",data[temp1+2], "|", data[temp1+3], "|", data[temp1+4])
return
elif Typ =="2":
for Suchwort in data:
print ("Element vorhanden")
temp1 = data.index(Suchwort)
print (data[temp1-1], "|", data[temp1], "|",data[temp1+1], "|", data[temp1+2], "|", data[temp1+3])
return
elif Typ =="3":
for Suchwort in data:
print ("Element vorhanden")
temp1 = data.index(Suchwort)
print (data[temp1-2], "|", data[temp1-1], "|",data[temp1], "|", data[temp1+1], "|", data[temp1+2])
return
elif Suchwort not in data:
return("Keine Ergebnisse")
else:
print ("Fehler im Programmablauf")
################################################################################################
def loadit(pfad):
try:
file1 = open(pfad, 'rb')
daten = pickle.load(file1)
file1.close()
return(daten)
except IOError:
print("Datei nicht vorhanden")
return ([])
################################################################################################
################################################################################################
def createfile(pfad):
file1 = open(pfad, 'wb')
temp1 = []
pickle.dump(temp1, file1)
file1.close()
################################################################################################
################################################################################################
def save(pfad,daten):
file1 = open(pfad, 'wb')
pickle.dump(daten, file1)
file1.close()
################################################################################################
pfad=raw_input("Bitte geben sie den pfad zur Datenbank an. Sollte die Datei nicht vorhanden sein so wird sie erstellt: ")
data=loadit(pfad)
if data == []:
createfile(pfad)
data=loadit(pfad)
while True:
menupunkt2=raw_input("Was wollen sie tun:\n1 Nach einem Datensatz suchen\n2 Einen Datensatz hinzufügen\n3 Einen Datensatz löschen\n>>>: ")
if menupunkt2=="1":
menu3=raw_input("Nach was suchen sie? \n1 Hersteller\n2 Artikelnummer\n3 Artikelbezeichnung\n>>>: ")
if menu3 == "1":
menu31=raw_input("Geben sie den Suchbegriff ein: ")
find(menu31, "1", data)
elif menu3 == "2":
menu31=raw_input("Geben sie den Suchbegriff ein: ")
find(menu31, "2", data)
elif menu3 == "3":
menu31=raw_input("Geben sie den Suchbegriff ein: ")
find(menu31, "3", data)
elif menu3 != "1" and menu3 != "2" and menu3 != "3":
print("Bitte geben sie eine gültige Ziffer ein!")
elif menupunkt2=="2":
data=addtodatabase(raw_input("Hersteller: "),raw_input("Artikelnummer: "),raw_input("Artikelbezeichnung"),raw_input("PreisEK: "),raw_input("PreisVK: "),data)
save(pfad, data)
elif menupunkt2== "3":
data=delfromdatabase(raw_input("Geben sie die Artikelnummer des gewünschten Artikels ein: "), data)
save(pfad, data)
elif menupunkt2!="1" and menupunkt2 !="2" and menupunkt2 !="3":
print("Bitte geben sie eine gültige Ziffer ein!")