Re: assigning variables from list data

2010-08-18 Thread Aahz
In article mailman.1627.1281018398.1673.python-l...@python.org,
Chris Hare  ch...@labr.net wrote:

cursor.execute('select * from net where NetNumber  0')

Unless your table is guaranteed to never change layout, I suggest that
instead listing fields is a Good Idea:

cursor.execute('select netNumber, netType,  from net where NetNumber  0')

Then the tuple unpack suggested by other posters will never fail.
-- 
Aahz (a...@pythoncraft.com)   * http://www.pythoncraft.com/

...if I were on life-support, I'd rather have it run by a Gameboy than a
Windows box.  --Cliff Wells
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: assigning variables from list data

2010-08-06 Thread Bruno Desthuilliers

Chris Hare a écrit :

I have a database query result (see code below).  In PHP, I would have said

list(var1,var2,var) = $result


Other already answered on the Python equivalent. But there's an IMHO 
better way, which is to use (if the DB-API connector provides it) a 
DictCursor, that yields dicts instead of tuples.




import sqlite3 as sqlite

try:
print connecting to disk db ...
conn = sqlite.connect(netcomm.db)
except:
print oops



OT, but do yourself a favor and remove this try/except. Sorry to have to 
say but it's about the most stupidiest error handling scheme you could 
think of. Seriously.


Ask yourself : what will happens if sqlite.connect raises AND you don't 
catch the exception ? Yes, the script will stop right here - which is 
what you want anyway - AND you will have an error message giving you 
informations about what went wrong, and a full traceback. IOW, you'll 
have as much helpful debugging infos as possible at this point.


Now what will happen with your current code ? Instead of an informative 
error message, you have a oops. Well, really helps. Then your script 
will go on, print retrieving data, and you can bet your ass it'll 
crash on the next line - cursor = conn.cursor(), that is - with a very 
less informative error message, and you'll wonder why.


Also, be warned that SysExit and KeyboardInterrupt are also exceptions. 
The one you may NOT want to catch and dismiss.


To make a long story short:

1/ only catch exceptions you can *and* want to handle
2/ never assume anything about what caused the exception
3/ not exception handling is better than a wrong exception handling.

HTH
--
http://mail.python.org/mailman/listinfo/python-list


Re: assigning variables from list data

2010-08-05 Thread Benjamin Kaplan
On Thu, Aug 5, 2010 at 7:26 AM, Chris Hare ch...@labr.net wrote:

 I have a database query result (see code below).  In PHP, I would have said

 list(var1,var2,var) = $result

 and each element in the list would be assigned to each of the named 
 variables.  I have my data coming out of the database, and I can see it is a 
 list.  so my question is, instead of having to do the variable assignment as 
 I have it here, is there a way more like PHP or am I stuck with it?

 import sqlite3 as sqlite

 try:
        print connecting to disk db ...
        conn = sqlite.connect(netcomm.db)
 except:
        print oops

 print retrieving data
 cursor = conn.cursor()
 cursor.execute('select * from net where NetNumber  0')
 list = cursor.fetchone()
 print list
 print len(list)
 for item in list:
    print item
 netNumber = list[0]
 netType = list[1]
 netConditions = list[2]
 netStartLocal = list[3]
 NCS = list[4]
 NCS1 = list[5]
 RADAR = list[6]
 NetFreq = list[7]
 Repeater = list[8]
 Notes = list[9]
 --

netNumber, netType, netConditions, netStartLocal, NCS, NCS1, RADAR,
NetFreq, Repeater, Notes = list

by the way, don't call the list list. It will hide the built-in with
the same name.

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

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


Re: assigning variables from list data

2010-08-05 Thread Tim Chase

On 08/05/10 09:26, Chris Hare wrote:

I have a database query result (see code below). In PHP, I
would have said

list(var1,var2,var) = $result

and each element in the list would be assigned to each of the
named variables. I have my data coming out of the database,
and I can see it is a list. so my question is, instead of
having to do the variable assignment as I have it here, is
there a way more like PHP or am I stuck with it?

cursor.execute('select * from net where NetNumber 0')
list = cursor.fetchone()


First off, I'd not mask the built-in list, but you can use

  row = cursor.fetchone()
  if row:
(netNumber, netType, netCond, netStLo, NCS, NCS1) = row
  else:
print No results

(just add in the right number of variables to which you want to 
assign to)


-tkc

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