Hi,
sqlite hat keine Deklaration 'date' oder ähnliches. Das fällt also weg, bzw. ist auch für sqlite nicht relevant.
executemany habe ich deshalb gemacht, weil ich im code die Variablen, also die Daten schreiben möchte. So soll ja jedes Datum vom 01.07.2018 bis 10.07.2018 als Beispiel geschrieben werden (was mir beim Tippen jetzt aber wieder die Überlegung bringt, dass das dann doch nicht in die Schleife, sondern danach geschrieben werden muss. Die Schleife sollte ja eigtl. nur das delta herleiten, zwischenspeichern und dann als Variablen in die Tabelle der db geschrieben werden).
Habe nun auch festgestellt, wenn ich ein print in der Schleife schreibe, dass nur dann alle Daten ausgegeben werden. Bin ich auch der Schleife raus, wird mir nur der letzte Wert übergeben.
Das verstehe ich nicht:
Ebenso wie der Tabellenname IMHO nicht stimmt. Üblicherweise beschreibt der *einen* Datensatz, aber *ein* Datensatz ist ja ein Datum und kein Datumsbereich in diesem Beispiel
Wieso soll der Tabellenname "daterange" nicht stimmen? Kann doch die Tabelle nennen wie ich möchte. Alle Datensätze sind zusammen der Datumsbereich.
Das mit 'date [a-c]' habe ich nur übergangsweise gewählt, bis der Code funktioniert. Bezeichnungen entsprangen dem Ausprobieren, ob es funktioniert oder nicht. Habe ich nun aber auch geändert. Deine Idee mit datetime.datetime as DateTime fand ich gut. habe ich direkt übernommen. Gefällt mir.
m_ im Namen kommt aus dem Programm wxFormBuilder und ich habe den Aufbau der Namen einfach übernommen. Habe mir dabei nichts gedacht
Jetzt bekomme ich für from_date und till_date folgenden output:
und meine date_from_till weiterhin:
Code: Alles auswählen
2018-07-01
2018-07-02
2018-07-03
2018-07-04
2018-07-05
2018-07-06
2018-07-07
2018-07-08
2018-07-09
2018-07-10
Jetzt habe ich noch probiert, eine Liste zu erstellen und die Ausgaben dort 'abzulegen' aber auch das klappt nicht,; die Ausgabe sieht für mich sehr verrückt aus.
Exemplarisch für das erste Datum:
Code: Alles auswählen
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Was ich suche, ist also diese Zeilen so umzuwandeln, dass ich diese Daten einer nach den anderen in eine neue Zeile schreibe. Ich suche schon selbst mit Schlagwörtern wie "string to tuple" oder "string to list" oder "convert string to tuple/list", etc... aber ich finde nichts passendes.
Der aktuelle Codesnip:
Code: Alles auswählen
def OnDateChanged(self,event):
date_format = "%Y-%m-%d"
from_date = DateTime.strptime(self.m_date_from.GetValue().Format(date_format),date_format)
till_date = DateTime.strptime(self.m_date_till.GetValue().Format(date_format),date_format)
print(from_date)
print(till_date)
sql_cmd = """
create table if not exists daterange (range TEXT);
"""
cur.execute(sql_cmd)
# data_range_list = []
day_count = (till_date - from_date).days + 1
# num_of_elements =int(day_count)
print(day_count)
for single_date in (from_date + datetime.timedelta(n) for n in range(day_count)):
date_from_till = str(single_date.date())
print(date_from_till)
# for i in range(num_of_elements):
# data_range_list.append(i)
# print(data_range_list)
sql_cmd = """
INSERT INTO daterange
VALUES(?);
"""
cur.executemany(sql_cmd, (data_range_list))
print(data_range_list)
con.commit()