pyDAL - 查询比某个日期更新的记录

时间:2017-09-26 11:24:33

标签: sqlite web2py pydal

我在SQLite上使用纯SQL进行以下查询,但不知道如何将其转换为pyDAL:

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

购买表架构是:

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));

1 个答案:

答案 0 :(得分:1)

您可以在Python中创建比较日期,而不是使用SQLite date函数:

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

或者,您也可以将原始SQL字符串作为查询传递:

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

注意,在这种情况下,因为db()中的查询只是一个字符串,DAL将不知道正在选择哪个表,所以有必要明确指定.select()中的字段(或者,您可以添加一个选择所有记录的虚拟查询,例如(db.buy.id != None))。