[Tutor] quicker .strip?

Lloyd Kvam pythontutor at venix.com
Fri Jan 9 15:17:48 EST 2004


fetchall returns a list of lists (well tuples, but you understand).
Effectively it's a matrix.  Your data looks a little funny because
each row is a single element.

I'd suggest:

ip = cursor.fetchall()
for x in ip:	# row by row
	for alpha in x:	# column by column
		config=getConfig(alpha)  ##Custom function that uses httplib to

There's no need to convert the row to a string and remove the characters
introduced by the conversion.  The IP address is already there as a string.

A cute coding trick for this case:

ip_list = zip(*cursor.fetchall())[0]
for ip in ip_list:
	config =getConfig(ip)

While we usually think of zip as peeling of list members in parallel it is
actually a matrix transpose function.  This converts the fetchall results
from a list of rows to a list of columns.  Your ip addresses are the first
(zeroth) column.

HTH

firephreek wrote:

> Hey, I'm brand spanking new to python, but I'm loving it.  I've begun 
> writing my first program that will run as a temperature 
> monitor/recorder.  I'm keeping track of unit IP's in a mysql database, 
> and I've written a function to pull them out, problem is when I retrieve 
> my 'list' of IP's from the databse, I get the info as a list, with each 
> IP surrounded by ( and "  i.e. (("10.1.1.205"),("10.1.1.206"))  and I'm 
> using strip() several times to get rid of the excess so that I can 
> re-use the IP address when gathering my data.  Here's the code, I hope 
> this all makes sense. 
>  
> ## Setup MySQL connection:
> conn=MySQLdb.connect(host=SQLHOST, user=SQLUSER, db=SQLDATA 
> passwd=SQLPASS)    
> cursor=conn.cursor()    ## Setup MySQL cursor
> cursor.execute("SELECT * FROM ip")  ## My list of IP address where my 
> devices are located
> ip=cursor.fetchall()
> ## At this point ip looks like this: (("10.1.1.205"),("10.1.1.206"))
> for x in range(len(ip)): 
>         alpha=IP_strip(str(ip[x])) 
>         config=getConfig(alpha)  ##Custom function that uses httplib to 
> get a page from my device over the network.
> def IP_strip(ip):
>     alpha=string.strip(ip, ")")
>     alpha=string.strip(alpha, "(")
>     alpha=string.strip(alpha, ",")
>     alpha=string.strip(alpha,"'")
>     return alpha
>  
> I'm wondering if there's any functions/methods that will strip the info 
> in fewer lines.  Or if there's another way of retrieving my information 
> so that I won't have to strip it.
>  
> -Stryder
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor

-- 
Lloyd Kvam
Venix Corp.
1 Court Street, Suite 378
Lebanon, NH 03766-1358

voice:	603-653-8139
fax:	801-459-9582




More information about the Tutor mailing list