[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