@Bizkit83: Das ist eine sehr unschöne, unleserliche Lösung, die zudem noch falsche Ergebnisse liefern könnte wenn verschiedenen `localtime()`-Aufrufe vor/nach ”Grenzen” erfolgen, also zum Beispiel einer in der 59 Minute und der nächste zur vollen Stunde.
Zahlen in Zeichenketten umwandeln um damit eine Zeichenkette zusammen zu basteln um das dann wieder in eine Zahl parsen ist verdammt umständlich und undurchsichtig.
Was sollen eigentlich die vielen `str()`-Aufrufe auf den SQL-Ergebnissen? Nicht das Du da schon `datetime.time`-Exemplare hast und das ganz *noch* umständlicher ist als es sein müsste! Wenn der Spaltentyp nämlich TIME ist, dann bekommst Du sehr wahrscheinlich schon `datetime.time`-Objekte geliefert.
Eine ähnliche Frage stellt sich bei ``row[5]`` — wozu ist die Umwandlung in `str` an dieser Stelle nötig?
Es würde ausserdem die Verständlichkeit steigern wenn man die einzelnen Elemente von `row` an Namen bindet und nicht über nichtssagende Indizes darauf zugreift.
Edit: Und ich hoffe mal ganz stark, dass `mysql.update()` keine Werte mit Zeichenkettenoperationen in SQL-Anweisungen hinein formatiert, sondern die Umwandlung dem Datenbankmodul überlässt.
Ungetestet:
Code: Alles auswählen
from datetime import datetime as DateTime
# ...
some_value, _, _, start_time, end_time, some_other_value = row
#
# Iff `start_time` and `end_time` *really* are strings,
# convert them to `datetime.time` instances here.
#
some_new_value = None
if start_time <= DateTime.now().time() < end_time:
if some_other_value == 0:
some_new_value = 1
else:
if some_other_value == 1:
some_new_value = 0
if some_new_value is not None:
mysql.update_timer(some_value, new_value)
print 'send ...'
Natürlich mit passenderen Namen als `some_*`.