ich glaub ich weiss jetzt wo das problem ist du versucht der funktion tatsaechlichen sinn zu geben ... dabei ist es voellig egal ob es butter oder panzer sind.
ka ich hab den code mal versucht zu dokumentiern...
du kannst ihn ja mal testen und schauen was passiert wenn du den datensatz erweiterst und weitere duplikate einbaust.
Code: Alles auswählen
import sqlite3
con = sqlite3.connect('testdb01.db3')
tname = 'te21'
#table zum befuellen erstellen
def erstelle_table_TakaTukaLand(tname):
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS {} ( \
country_id INTEGER PRIMARY KEY, \
milch varchar[200], \
butter varchar[200], \
anzahl_genommen real, \
anzahl_hinzugefuegt real, \
obst_sorte varchar[200], \
obst_anzahl real, \
date_stamp text, \
name varchar[200], \
duplikat_gewollt_counter INTEGER, UNIQUE(milch, butter, anzahl_genommen, anzahl_hinzugefuegt, obst_sorte, obst_anzahl, date_stamp, name, duplikat_gewollt_counter) ON CONFLICT ABORT)" .format(tname))
erstelle_table_TakaTukaLand(tname)
#funktion zum befuellen des tables
def fill_ks_tab(milch='0', butter='0', anzahl_genommen=0, anzahl_hinzugefuegt=0, obst_sorte='0', obst_anzahl=0, date_stamp='0', name='0' ,duplikat_gewollt_counter=0):
with con:
talble_insert = tname
cur = con.cursor()
cur.execute("INSERT OR IGNORE into {} ( \
milch, \
butter, \
anzahl_genommen, \
anzahl_hinzugefuegt, \
obst_sorte, \
obst_anzahl, \
date_stamp, \
name, \
duplikat_gewollt_counter) \
values (?, ?, ?, ?, ?, ?, ?, ?, ?)" .format(talble_insert),( \
milch, \
butter, \
anzahl_genommen, \
anzahl_hinzugefuegt, \
obst_sorte, \
obst_anzahl, \
date_stamp, \
name, \
duplikat_gewollt_counter))
#fill_ks_tab()
# table am ende printen
def output_content(tname):
with con:
cur = con.cursor()
for row in cur.execute('select * from {};' .format(tname) ):
zeileintable = row
print (zeileintable)
#ab hier passiert die aktion
duplikat_gewollt_counter = 0
i = 0
#erzeuge 21 datensaetze
while i < 21:
#verschiedene datensaetze
milch='0'
butter='0'
anzahl_genommen=i
anzahl_hinzugefuegt=i
obst_sorte='0'
obst_anzahl=i
date_stamp='0'
name='0'
# jetzt duplikate erzeugen
if i == 3:
anzahl_genommen = i - 1
anzahl_hinzugefuegt = i - 1
obst_anzahl = i - 1
if i == 8:
anzahl_genommen = i - 1
anzahl_hinzugefuegt = i - 1
obst_anzahl = i - 1
if i == 12:
anzahl_genommen = i - 1
anzahl_hinzugefuegt = i - 1
obst_anzahl = i - 1
# ein doppeltes duplikat
if i == 13:
anzahl_genommen = i - 2
anzahl_hinzugefuegt = i - 2
obst_anzahl = i - 2
if i == 18:
anzahl_genommen = i - 1
anzahl_hinzugefuegt = i - 1
obst_anzahl = i - 1
# abfrage ob ein duplikat vorliegt
if i > 0 and bamilch==milch and babutter==butter and baanzahl_genommen==anzahl_genommen and baanzahl_hinzugefuegt==anzahl_hinzugefuegt and baobst_sorte==obst_sorte and baobst_anzahl==obst_anzahl and badate_stamp==date_stamp and baname==name:
# gib dem duplikat ein unterscheidungswert
duplikat_gewollt_counter += 1
# ist die duplikat reihe zu ende
else:
duplikat_gewollt_counter = 0
#werte ins table schreiben
fill_ks_tab(milch, butter, anzahl_genommen, anzahl_hinzugefuegt, obst_sorte, obst_anzahl, date_stamp, name, duplikat_gewollt_counter)
#werte speichern zum abgleich mit naechsten datensatz
bamilch=milch
babutter=butter
baanzahl_genommen=anzahl_genommen
baanzahl_hinzugefuegt=anzahl_hinzugefuegt
baobst_sorte=obst_sorte
baobst_anzahl=obst_anzahl
badate_stamp=date_stamp
baname=name
#neue runde
i += 1
output_content(tname)
Code: Alles auswählen
(1, '0', '0', 0.0, 0.0, '0', 0.0, '0', '0', 0)
(2, '0', '0', 1.0, 1.0, '0', 1.0, '0', '0', 0)
(3, '0', '0', 2.0, 2.0, '0', 2.0, '0', '0', 0)
(4, '0', '0', 2.0, 2.0, '0', 2.0, '0', '0', 1)
(5, '0', '0', 4.0, 4.0, '0', 4.0, '0', '0', 0)
(6, '0', '0', 5.0, 5.0, '0', 5.0, '0', '0', 0)
(7, '0', '0', 6.0, 6.0, '0', 6.0, '0', '0', 0)
(8, '0', '0', 7.0, 7.0, '0', 7.0, '0', '0', 0)
(9, '0', '0', 7.0, 7.0, '0', 7.0, '0', '0', 1)
(10, '0', '0', 9.0, 9.0, '0', 9.0, '0', '0', 0)
(11, '0', '0', 10.0, 10.0, '0', 10.0, '0', '0', 0)
(12, '0', '0', 11.0, 11.0, '0', 11.0, '0', '0', 0)
(13, '0', '0', 11.0, 11.0, '0', 11.0, '0', '0', 1)
(14, '0', '0', 11.0, 11.0, '0', 11.0, '0', '0', 2)
(15, '0', '0', 14.0, 14.0, '0', 14.0, '0', '0', 0)
(16, '0', '0', 15.0, 15.0, '0', 15.0, '0', '0', 0)
(17, '0', '0', 16.0, 16.0, '0', 16.0, '0', '0', 0)
(18, '0', '0', 17.0, 17.0, '0', 17.0, '0', '0', 0)
(19, '0', '0', 17.0, 17.0, '0', 17.0, '0', '0', 1)
(20, '0', '0', 19.0, 19.0, '0', 19.0, '0', '0', 0)
(21, '0', '0', 20.0, 20.0, '0', 20.0, '0', '0', 0)