Использование Peewee ORM с датой математики MySQL - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь преобразовать приложение, которое использует MySQLdb, чтобы использовать Peewee вместо этого. Большинство SELECT и INSERT не являются проблемой, но один класс запросов меня озадачил.

Оригинальный код содержит:

sql = "SELECT * FROM {tbl} WHERE tail='{tail}' AND flight="+\
    "'{flight}' AND dest='{dest}' AND orig='{orig}' AND "+\
    "oooi='{oooi}' AND report_time > ('{time}' - INTERVAL 2 HOUR) "+\
    "AND report_time < ('{time}' + INTERVAL 2 HOUR)"
cmd = sql.format(tbl = self.table, tail=tail, flight=flight, dest=dest,
     orig=orig, time = report_time, oooi=oooi)

c.execute(cmd)
return c.fetchone()

Пытаясь переписать это, чтобы использовать Peewee, я придумал:

oooi_rec = Oooi_rec.select().where(Oooi_rec.tail == self.tail, 
    Oooi_rec.flight == self.flight, 
    Oooi_rec.dest == self.dest, Oooi_rec.orig == self.orig, 
    Oooi_rec.oooi=self.oooi,
    Oooi_rec.report_time.between(low, high))

Бит, который заменяет «низкий» и «высокий», - это то, что меня сейчас озадачило. Я пытаюсь разобраться, как использовать функцию Peewee's fn (), но она работает медленно.

1 Ответ

0 голосов
/ 09 сентября 2018

Возможно:

low - SQL('interval 2 hour')

Кроме того, столько инъекций sql, как вы делали раньше ... да.

...