Hallo
ich möchte mit Python die Stunde der Variable "temptime' in eine andere Variable abspeicher. Dies soll gleichzeitig auch der Name der Spalte meiner SQLite Tabelle sein.
Wie stell ich das am Besten an?
Wert der aktuellen Stunde zuweisen
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sunshineh: Was ist denn das Problem dabei?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Ich mach es nun so:
column = "c"+str(datetime.datetime.now().strftime("%H))
Nur wie bekommt ich in meinen SQLite Command nun diese Variable?
So klappt es jedenfalls nicht:
column = "c"+str(datetime.datetime.now().strftime("%H))
Nur wie bekommt ich in meinen SQLite Command nun diese Variable?
So klappt es jedenfalls nicht:
Code: Alles auswählen
sql_command = """ UPDATE tabname SET ? = ? +1 WHERE sensor = 'PIR1',column, column
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sunshineh: Gar nicht würde ich sagen. Wenn man ”variable” Spaltennamen hat, ist das üblicherweise ein Zeichen für einen nicht so tollen Datenbankentwurf. Die Stunde ist offensichtlich etwas variables und nichts statisches, also würde man das als *eine* Spalte definieren und nicht als Spalte pro Stunde. Man hat dann einen Tabelleneintrag pro Stunde. Oder besser noch einen Eintrag pro Messung mit Zeitstempel. Später alles nach Stunden gruppieren und zusammen zu rechnen ist ja gerade eine der Stärken von Datenbanken.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Danke für die Info. Aber grundsätzlich möchte ich das schon so, eben für jede Stunde eine eigene Spalte.
Nur weiß ich nicht, wie ich die Variable in mein SQL Command bekomme
Folgendes geht nicht
Als Meldung erhalte ich folgendes:
cursor.execute(sql_command,(,(column,column))
splite 3.OperationalError: near "?": syntax error
Nur weiß ich nicht, wie ich die Variable in mein SQL Command bekomme
Folgendes geht nicht
Code: Alles auswählen
sql_command = "UPDATE tabname SET ? = ? + 1 WHERE Sensor = 'PIR1' AND DayOfWeek = '1,2,3,4,5' "
cursor.execute(sql_command,(column,column))
cursor.execute(sql_command,(,(column,column))
splite 3.OperationalError: near "?": syntax error
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sunshineh: Platzhalter sind für Werte und Spaltennamen sind keine Werte. Der Wert für `DayOfWeek` sieht auch komisch aus.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
- __blackjack__
- User
- Beiträge: 13077
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@sunshineh: Statt die Stunden + Anzahl in Spalten zu kodieren, würde man die zum Beispiel so in einer eigenen Tabelle erfassen.
Wobei ich wie gesagt statt der `hour_counter`-Tabelle eher die Ereignisse mit einem Zeitstempel aufzeichnen würde. Aggregieren kann man später immer noch:
Code: Alles auswählen
CREATE TABLE sensor (
id INTEGER PRIMARY KEY,
"name" CHAR(10) NOT NULL,
day_of_week CHAR(16) NOT NULL,
CONSTRAINT sensor_con_1 UNIQUE ("name", day_of_week)
);
CREATE TABLE hour_counter (
id INTEGER PRIMARY KEY,
sensor_id INTEGER NOT NULL REFERENCES sensor (id),
"hour" INTEGER NOT NULL CHECK ("hour" BETWEEN 0 AND 23),
"count" INTEGER NOT NULL DEFAULT 0 CHECK ("count" >= 0),
CONSTRAINT measurement_con_1 UNIQUE (sensor_id, "hour")
);
Code: Alles auswählen
CREATE TABLE "event" (
id INTEGER PRIMARY KEY,
sensor_id INTEGER NOT NULL REFERENCES sensor (id),
"timestamp" TIMESTAMP NOT NULL DEFAULT (NOW)
);
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman