Στις 21/10/2013 9:58 πμ, ο/η Steven D'Aprano έγραψε:
On Mon, 21 Oct 2013 09:07:17 +0300, Νίκος Αλεξόπουλος wrote:

      for row in data:
          (host, city, useros, browser, ref, hits, lastvisit) = row
          lastvisit = lastvisit.strftime('%A %e %b, %H:%M')

          print( "<tr>" )
          for item in (host, city, useros, browser, ref, hits,
          lastvisit):
              print( "<td><center><b><font color=white> %s </td>" % item
              )
[...]
In the above code i print the record of the mysql table visitors in
each row like this:  http://superhost.gr/?show=log&page=index.html

Now, i wish to write the same thing but when it comes to print the
'lastvisit' field to display it in a <select></select> tag so all prior
visits for the same host appear in a drop down menu opposed to as i
have it now which i only print the datetime of just the latest visit of
that host and not all its visit datetimes.

I hope i made it clear what i want to achieve.


Any help would be appreciated.


Step 1:

Decide what counts as "the same visitor". Is it...?

- anyone with the same IP address?
- anyone with the same IP address and the same useros?
- anyone with the same IP address, the same useros, and the same browser?
- something else?

First let me show you the database insertion to start form there:

The definition of the same visitor in my case is basically a combination of they page the visitor tries to visit along with its hostname. At MySQL's definition iam implementing this as:

  unique index (counterID, host)


Up until now i was updating the record of the same visitor as follows:

============================
# if first time visitor on this page, create new record, if visitor exists then update record cur.execute('''INSERT INTO visitors (counterID, host, city, useros, browser, ref, lastvisit) VALUES (%s, %s, %s, %s, %s, %s, %s) ON DUPLICATE KEY UPDATE city = %s, useros = %s, browser = %s, ref = %s, hits = hits + 1, lastvisit = %s''', (cID, host, city, useros, browser, ref, lastvisit, city, useros, browser, ref, lastvisit) )
=============================


Since now i have decided to have more records for the same visitor if i'm gonna save its history of visits, i'm thinking that i can no longer update the same unique visitor record but save many records related to the same visitor. so i use this:


=============================
# ~ DATABASE INSERTS ~
=============================
try:
# if first time for webpage; create new record( primary key is automatic, hit is defaulted ), if page exists then update record cur.execute('''INSERT INTO counters (url) VALUES (%s) ON DUPLICATE KEY UPDATE hits = hits + 1''', page )
        # get the primary key value of the new added record
        cID = cur.lastrowid

# if first time visitor on this page, create new record, if visitor exists then update record cur.execute('''INSERT INTO visitors (counterID, host, city, useros, browser, ref, lastvisit) VALUES (%s, %s, %s, %s, %s, %s, %s)''',
                                           (cID, host, city, useros, browser, 
ref, lastvisit) )

        con.commit()
except pymysql.ProgrammingError as e:
        print( repr(e) )
        con.rollback()
=============================


Are we good up until this point as it concerns the database insertions?
If we are then we can discuss how to present the saved data.


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to