0

我有以下查询在 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));
4

1 回答 1

1

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

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

于 2017-09-26T13:55:06.007 回答