pyDAL - 查询比特定日期更新的记录
pyDAL - query records newer than a certain date
我在 SQLite 上的纯 SQL 中有以下查询,但不知道如何将其转换为 pyDAL:
SELECT * FROM buy WHERE date('now','-2 days') < timestamp;
购买 table 架构是:
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));
您可以在 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将不知道选择的是哪个table,所以需要显式指定其中的字段.select()
(或者,您可以添加一个选择所有记录的虚拟查询,例如 (db.buy.id != None)
)。
我在 SQLite 上的纯 SQL 中有以下查询,但不知道如何将其转换为 pyDAL:
SELECT * FROM buy WHERE date('now','-2 days') < timestamp;
购买 table 架构是:
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));
您可以在 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将不知道选择的是哪个table,所以需要显式指定其中的字段.select()
(或者,您可以添加一个选择所有记录的虚拟查询,例如 (db.buy.id != None)
)。