mysql solution

Lele Gaifax lele at metapensiero.it
Thu Jan 24 16:39:54 CET 2013


Duncan Booth <duncan.booth at invalid.invalid> writes:

> I'm not MySQL expert, but something like this might work:
>
> cursor.execute('''UPDATE visitors,counter 
> SET visitors.hits=visitors.hits+1, visitors.useros=%s,
>     visitors.browser =%s, visitors.date=%s
> WHERE visitors.pin=counter.pin AND counter.page = %s 
>     AND visitors.host=%s''',
>    (useros, browser, date, page, host))

I stopped surprising at MySQL syntax eons ago, so if that works... great!

Otherwise I would write the equivalent statement with a more "standard
syntax" (for whatever meaning of "standard" in the SQL world :-) as:

UPDATE visitors
   SET visitors.hits=visitors.hits+1, 
       visitors.useros=%s,
       visitors.browser=%s, 
       visitors.date=%s
WHERE visitors.pin=(SELECT counters.pin
                    FROM counters
                    WHERE counters.page=%s)
  AND visitors.host=%s

But I wonder about the "logic" here: why are you storing the "useros",
"browser" and "date" in a table where the primary key seems to be
("pin", "host")? I mean, what happens if a user visits the same page
twice, first with Firefox and then with Chrome?

hope this helps,
ciao, lele.
-- 
nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
lele at metapensiero.it  |                 -- Fortunato Depero, 1929.




More information about the Python-list mailing list