2017-09-26 5 views
0

Ich habe die folgende Abfrage in reiner SQL auf SQLite arbeiten, aber nicht wissen, wie es zu pyDAL konvertieren:pyDAL - Abfrage Datensätze neuer als ein bestimmtes Datum

SELECT * FROM buy WHERE date('now','-2 days') < timestamp; 

Das Kauftabellenschema:

CREATE TABLE "buy"(
    "id" INTEGER PRIMARY KEY AUTOINCREMENT, 
    "order_id" CHAR(512), 
    "market" CHAR(512), 
    "purchase_price" DOUBLE, 
    "selling_price" DOUBLE, 
    "amount" DOUBLE 
, "timestamp" TIMESTAMP, "config_file" CHAR(512)); 

Antwort

1

Statt die SQLite date Funktion verwenden, können Sie den Vergleich Datum in Python erstellen:

import datetime 
cutoff_time = datetime.datetime.now() - datetime.timedelta(2) 
rows = db(db.buy.timestamp > cutoff_time).select() 

Alternativ können Sie auch eine rohe SQL-Zeichenfolge als Abfrage übergeben:

rows = db('buy.timestamp > date("now", "-2 days")').select(db.buy.ALL) 

Hinweis in diesem Fall, da die Abfrage innerhalb db() einfach ein String ist, wissen die DAL nicht die Tabelle ausgewählt wird, so Es ist erforderlich, die Felder in .select() explizit anzugeben (alternativ können Sie eine Dummy-Abfrage hinzufügen, die alle Datensätze auswählt, z. B. (db.buy.id != None)).

Verwandte Themen