On 08/10/2012 06:02 AM, leon zaat wrote:
> I am trying to fill a file. 
> When i am start the leading fuction the file schould be overwriting the , 
> probarly, existing csv file.
> Accoording from keys from different keys in my sql files, information is 
> collected and written in a other function.
>
> I tried something like this 
> <code>
> class BAGExtractPlus(wx.Frame):
> ..........
>     
> #------------------------------------------------------------------------------
>     # schrijven van de records
>     
> #------------------------------------------------------------------------------
>     def schrijfExportRecord(self,identificatie, hoofdadres, 
> verblijfobjectgeometrie, dag):
>     
>         ofile=open(r'D:\bestanden\BAG\adrescoordinaten.csv', 'wa')
>
>         verblijfhoofd = csv.writer(ofile, delimiter=',',
>
>                 quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
>         sql1="";
>         sql1="Select huisnummer, huisletter, huisnummertoevoeging, postcode, 
> gerelateerdeopenbareruimte  from nummeraanduiding "
>         sql1a= "where aanduidingrecordinactief<> 'J' and"
>         hsql1=" einddatum > '" +  dag + "' and identificatie = '" + 
> hoofdadres + "'";
>         sql1= sql1 + sql1a + hsql1;
>         num= database.select(sql1);
>         for row in num:
>             huisnummer=row[0];
>             huisletter=row[1];
>             huisnummertoevoeging=row[2];
>             postcode=row[3];
>             gerelateerdeopenbareruimte=row[4];
>             sql2="Select openbareruimtenaam, gerelateerdewoonplaats  from 
> openbareruimte where aanduidingrecordinactief<> 'J'"
>             sql2= sql2 + "and  einddatum > '" +  dag + "' and identificatie = 
> '" +  gerelateerdeopenbareruimte + "'";
>             opn=database.select(sql2);
>             for row in database.select(sql2):
>                 openbareruimtenaam=row[0];
>                 gerelateerdewoonplaats=row[1];
>                 sql3="Select woonplaatsnaam  from woonplaats where 
> aanduidingrecordinactief<> 'J'"
>                 sql3= sql3 + "and  einddatum > '" +  dag + "' and 
> identificatie = '" +  gerelateerdewoonplaats + "'";
>                 wpl=database.select(sql3);
>                 for row in wpl:
>                     woonplaatsnaam=row[0];
>                     newrow=[identificatie, verblijfobjectgeometrie, 
> huisnummer, huisletter, huisnummertoevoeging, postcode,openbareruimtenaam, 
> woonplaatsnaam];
>                     verblijfhoofd.writerow(newrow);
>
>         del wpl[:];
>         del opn[:];
>         del num[:];
>      
>     
> #--------------------------------------------------------------------------------------
>     # Exporteer benodigde gegevens
>     
> #--------------------------------------------------------------------------------------
>     def ExportBestanden(self, event):
>         
>         ofile=open(r'D:\bestanden\BAG\adrescoordinaten.csv', 'wb')
>         verblijfhoofd = csv.writer(ofile, delimiter=',',
>                 quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
>         dag=str(datetime.date.today());
>         sql4="Select adresseerbaarobjectnevenadres.identificatie, 
> adresseerbaarobjectnevenadres.nevenadres from adresseerbaarobjectnevenadres 
> where aanduidingrecordinactief<> 'J' order by 
> adresseerbaarobjectnevenadres.identificatie"
>         neven= database.select(sql4);
>         for row in neven: 
>             nidentificatie=row[0];
>             nevenadres=row[1];
>
>             sql="Select identificatie, hoofdadres, ligplaatsgeometrie  from 
> ligplaats where aanduidingrecordinactief<> 'J' and einddatum >'" + dag + "' 
> and identificatie = '"+ nidentificatie + "'"
>             lig= database.select(sql);
>             for row in lig:
>                 hoofdadres=nevenadres;
>                 identificatie=row[0];
>                 verblijfobjectgeometrie=row[2];
>                 self.schrijfExportRecord(identificatie, hoofdadres, 
> verblijfobjectgeometrie, dag)
>         sql="Select identificatie, hoofdadres, verblijfsobjectgeometrie  from 
> verblijfsobject where aanduidingrecordinactief<> 'J' and einddatum >'" + dag 
> + "' and identificatie = '"+ nidentificatie + "'"
>             vbo= database.select(sql);
>             for row in vbo:
>                 hoofdadres=row[1];
>                 identificatie=row[0];
>                 verblijfobjectgeometrie=row[2];
>                 self.schrijfExportRecord(identificatie, hoofdadres, 
> verblijfobjectgeometrie, dag)
>             sql="Select identificatie, hoofdadres, standplaatsgeometrie  from 
> standplaats where aanduidingrecordinactief<> 'J' and einddatum >'" + dag + "' 
> and identificatie = '"+ nidentificatie + "'"
>             stand= database.select(sql);
>             for row in stand:
>                 hoofdadres=nevenadres;
>                 identificatie=row[0];
>                 verblijfobjectgeometrie=row[2];
>                 self.schrijfExportRecord(identificatie, hoofdadres, 
> verblijfobjectgeometrie, dag)
>         del stand[:];
>         del vbo[:];    
>         del lig[:];
>         del neven[:];
>         sql="Select identificatie, hoofdadres, ligplaatsgeometrie  from 
> ligplaats where aanduidingrecordinactief<> 'J' and einddatum >'" + dag + "'"
>         lig= database.select(sql);
>         for row in lig:
>             hoofdadres=row[1];
>             identificatie=row[0];
>             verblijfobjectgeometrie=row[2];
>             self.schrijfExportRecord(identificatie, hoofdadres, 
> verblijfobjectgeometrie, dag)
>         del lig[:];
>         sql="Select identificatie, hoofdadres, standplaatsgeometrie  from 
> standplaats where aanduidingrecordinactief<> 'J' and einddatum >'" + dag + "'"
>         stand= database.select(sql);
>         for row in stand:
>             hoofdadres=row[1];
>             identificatie=row[0];
>             verblijfobjectgeometrie=row[2];
>             self.schrijfExportRecord(identificatie, hoofdadres, 
> verblijfobjectgeometrie, dag)
>         del stand[:];   
> </code>
>
> The seems to work, but after 200.00 entries i got the message that opening is 
> not allowed.
>
> What i am doing wrong?
> Is there a way to open the file once.
> When i  didn't open it in the first part, it said it couldn't find the file.  
>                                         
>


What do you mean by work?  Each time through the   for row in stand:  
loop, it calls

schrijfExportRecord(), which truncates the file.  I'll assume that's what you 
want, though I can't see the leading() function mentioned in your introductory 
comments.

If that's the case, remove the first two lines of the method ExportBestanden
() .  You never use the locals ofile and  verblixxxhoofd anyway.

On the other hand, if you want to create a single csv file for the whole 
lifetime of the BagExstraxtPlus instance, then create it in the __init__ 
method, and save the ofile and the verblixxx thing as an instance attribute.  
And don't re-open it in either of the existing methods.

I also see no sign of a close() call.  Perhaps the class needs a close() 
method, whose job it is to close the csv and the actual file.






-- 

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to