[python] cherrypy&databázová data, cachování
Lukáš Linhart
almad na include.cz
Neděle Listopad 25 13:55:00 CET 2007
E-mail martin.stiborsky at gmail.com ze dne Sunday 25 of November 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.
Stejně bych šel do toho datetimu :)
>
> 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 ..
Pokud dobře vím tak cachuje a to právě v ORM, tedy v sqlalchemy. Spousta ORM
má tu vlastnost, že jedna entita s daným primárním klíčem má max. jednu
instanci, tj. dotaz na stejným PK vrátí už vytvořenou instanci, tj. se pak
dají porovnávat přímo objekty.
> 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
Summary:
- přepíšete atribut create_date zformátovaným datem
- instance zůstane někde viset v cachi
- při reloadu dostane tu původní instanci, co už má přepsan atribut
- error
Řešením je asi uložit zformátované datum do nového atributu. Na nějaké vypnutí
cachí bych se nespoléhal, protože jinak tenhle problém nastane při
paralelních requestech.
A nebo, kdybyste místo timestampu použil datetime, tak bych považoval za
legální přistupovat k jeho atributu strfime v šabloně a zformátovat si to až
tam.
Pěknou a pokud možno nepočítačovou neděli,
--
Lukáš Linhart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
Url : http://www.py.cz/pipermail/python/attachments/20071125/2c11711c/attachment.pgp
Další informace o konferenci Python