[Zope] python help needed

Andrew Milton akm at theinternet.com.au
Tue Jan 19 14:59:21 EST 2010


+-------[ Garry Saddington ]----------------------
| I am trying to upload a csv file (called data) using the following script:
| 
| i=0
| d=data.readlines()
| for row in d:
|          i+=1
|          a=row.split(',')
|          if i > 1:
|              subjectid=a[0]
|              entry=a[1]
|              type=a[2]
|              studentid=a[3]
|          try:
|  
|  
| context.insertestimatesandtargets(subjectid=subjectid,entry=entry,type=type,studentid=studentid)
|          except:
|              continue
| return "something good"
| 
| (email editor messed up indentation)
| 
| insertestimatesandtargets() is a ZSQLmethod. When the call to this 
| method results in an error the script stops and not all data is 
| inserted. Without an error all the data is inserted.
| So how can I make this script skip over errors and continue? The reason 
| is that there may already be some data in the database table that I want 
| to preserve.

The try/except block should prevent the script from failing when calling
the ZSQL method (assuming your indenting *is* correct in the python
script [look for mixed tabs/spaces, since in the email some of your
indents are 8 and some are 4]).

Your other option is to do transaction sub-commits manually (there's
plenty of google links for how to do this).

You probably can't do this directly from a python script, you'll have to
setup an External Method to do it (or alter the security for the
transaction machinery).

-- 
Andrew Milton
akm at theinternet.com.au


More information about the Zope mailing list