Τη Πέμπτη, 24 Ιανουαρίου 2013 5:39:54 μ.μ. UTC+2, ο χρήστης Lele Gaifax έγραψε:

> 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?


it doesn't work, it creates new entries on every webpage visit instead of 
updating.

this is what i have up until now:

[code]
        # insert new page record in table counters or update it if already 
exists
        try:
                cursor.execute( '''INSERT INTO counters(page, hits) VALUES(%s, 
%s)
                                                                ON DUPLICATE 
KEY UPDATE hits = hits + 1''', (htmlpage, 1) )
        except MySQLdb.Error, e:
                print ( "Error %d: %s" % (e.args[0], e.args[1]) )
                
        # update existing visitor record if same pin and same host found
        try:
                cursor.execute('''UPDATE visitors SET hits=hits+1, useros=%s, 
browser=%s, date=%s 
                                                  WHERE id=(SELECT id FROM 
counters WHERE page=%s) AND host=%s''',
                                                                            
(useros, browser, date, htmlpage, host))
        except MySQLdb.Error, e:
                print ( "Error %d: %s" % (e.args[0], e.args[1]) )
        
        # insert new visitor record if above update did not affect a row
        if cursor.rowcount == 0:
                cursor.execute( '''INSERT INTO visitors(hits, host, useros, 
browser, date) VALUES(%s, %s, %s, %s, %s)''', (1, host, useros, browser, date) )
[/code]

Something is definately wrong here, its logic is not correct.....
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to