[python] cherrypy&databázová data, cachování

martin.stiborsky na gmail.com martin.stiborsky na gmail.com
Neděle Listopad 25 13:07:11 CET 2007


Hezkou neděli přeji.
v mém minulém dotazu tady v konferenci jsem se ptal, jak je
nejvýhodnější ukládat datum do databáze. Zkusil jsem tedy timestamp.
Databázi se takové číslo sice líbí, ale pro uživateli moc ne. Takže
jej převádím do lidsky čitelného formátu. Modul datetime má hezkou
metodu na vytvoření datetime objektu z timestampu a pak už není
problém ho zformátovat pomocí strftime() jak je libo.
Tedy, selectnu data z databáze a u každého vyselectovaného řádku je
potřeba timestamp nahradit novým, hezkým datem to pak šoupnout
databázi. Není problém, for cyclem to projedu a je to.
Vše krásně funguje, když otevřu stránku, je tam nové, hezké datum,
když reloadnu. dostanu error.

ValueError: invalid literal for float(): 24/11/2007 14:06:05

Místo timestamu z databáze, dostane program data která má dostat od
programu šablona, někde se to nejspíš cachuje, nebo já nevím, v
cherrypy jsem cachování vypnul, sqlalchemy to myslím nedělá, genshi
šablony, snad taky ne, nic takového jsem teda nenašel, netuší někdo,
kde se děje chyba ? Vím že tohle bude dost těžké říct, když tady není
kompletní kód, ale cokoli mi pomůže ..

Tímhle dělám hezké datum:
def public_date(timestamp):
	timestamp = float(timestamp)
	date = datetime.fromtimestamp(timestamp)
	return date.strftime("%d/%m/%Y %H:%M:%S")

smyčka pro nahrazování:
for post in posts_data:
              post.create_date = public_date(post.create_date)
....
return posts_data


Další informace o konferenci Python