How to add a current string into an already existing list

Nick the Gr33k nikos.gr33k at gmail.com
Mon Nov 4 18:03:58 CET 2013


Στις 3/11/2013 2:16 μμ, ο/η Roy Smith έγραψε:
> In article <bdm7fiF28rrU1 at mid.individual.net>,
>   Gregory Ewing <greg.ewing at canterbury.ac.nz> wrote:
>
>> Nick the Gr33k wrote:
>>> I just want a mysql column type that can be eligible to store an array
>>> of elements, a list that is, no need for having a seperate extra table
>>> for that if we can have a column that can store a list of values.
>>
>> Relational database systems typically don't provide any
>> such type, because it's not the recommended way of storing
>> that kind of data in a relational database.
>>
>> The recommended way is to use a secondary table, as has
>> been pointed out.
>
> Most SQL databases allow you to store arbitrary data as an opaque value
> (i.e. BLOB).  So, one possibility would be to just serialize your list
> (pickle, json, whatever) and store it that way.  I've seen databases
> that didn't use BLOB, but just stored json in a string field.
>
> The limitation, of course, is that the data is opaque as far as the
> database goes; you can't do queries against it.  But, if all you need to
> do is store the list and be able to retrieve it, it's a perfectly
> reasonable thing to do, and a lot more efficient than doing a join on a
> secondary table.
>
> Normalization is for database weenies :-)
>

Exactly my sentiments Roy!

Call me picky but even if they try to hit me hard i wll always get to 
pick the simplest and better looking way.


I have managed to make my code work by:


create table visitors
(
   counterID integer(5) not null,
   host varchar(50) not null,
   refs varchar(25) not null,
   city varchar(20) not null,
   userOS varchar(10) not null,
   browser varchar(10) not null,
   visits datetime not null,
   hits integer(5) not null default 1,
   downloads varchar(50) not null default '',
   foreign key (counterID) references counters(ID),
   unique index (visits)
  )ENGINE = MYISAM;


=============================================
# add this visitor entry into database (hits && downloads are defaulted)
cur.execute('''INSERT INTO visitors (counterID, refs, host, city, 
useros, browser, visits) VALUES (%s, %s, %s, %s, %s, %s, %s)''',  (cID, 
ref, host, city, useros, browser, lastvisit) )
=============================================

and later on ....

=============================================
torrents = []
# check if visitor has downloaded movies
for download in downloads:
	if download != '':
		torrents.append( download )

# present visitor's movie picks if any
if torrents:
	print( '<td><select>' )
		for n, torrent in enumerate( torrents ):
		if n == 0:
			op_selected = 'selected'
		else:
			op_selected = ''
		print( '<option %s> %s </option>' % (op_selected, torrent) )
	print( '</select></td>' )
else:
	print( '<td><center><b><font color=white> Δεν πραγματοποίηθηκαν ακόμη! 
</td>' )
break
=============================================


Please since this column you mentioned is able to store a Python's list 
datatype could you tell me what needs alternation in:

1. MySQL's visitor's table definition time
2. python database cur.execute method
3. retrieval time

Thank you very much for anyone wishes to give me a hand here.




More information about the Python-list mailing list