我在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));
答案 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)
)。