title: Read and wirte postgres script using python
body: <p>I have postgres tables and i want to run a <code>PostgreSQL</code> script file  on these tables using python and then write the result of the queries in a csv file. The script file have multiple queries separated by semicolon <code>;</code>. Sample script is shown below</p>
  
  <p><strong>Script file:</strong></p>
  
  <pre><code>--Duplication Check
  select p.*, c.name
  from scale_polygons_v3 c inner join cartographic_v3 p
  on (metaphone(c.name_displ, 20) LIKE metaphone(p.name, 20)) AND c.kind NOT IN (9,10)
  where ST_Contains(c.geom, p.geom);
  
  --Area Check
  select sp.areaid,sp.name_displ,p.road_id,p.name
  from scale_polygons_v3 sp, pak_roads_20162207 p
  where st_contains(sp.geom,p.geom) and sp.kind = 1
  and p.areaid != sp.areaid;
  </code></pre>
  
  <p>When i run the python code, it executes successfully without any error but the problem i am facing is, during writing the result of the queries to a csv file. Only the result of last executed query is written to the csv file. It means that first query result is overwrite by the second query, second by third and so on till the last query.  </p>
  
  <p><strong>Here is my python code:</strong></p>
  
  <pre><code>import psycopg2
  import sys
  import csv
  import datetime, time
  
  def run_sql_file(filename, connection):
  '''
      The function takes a filename and a connection as input
      and will run the SQL query on the given connection  
  '''
      start = time.time()
  
      file = open(filename, 'r')
      sql = s = " ".join(file.readlines())
     #sql = sql1[3:]
      print "Start executing: " + " at " + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) + "\n"
      print "Query:\n", sql + "\n"
      cursor = connection.cursor()
      cursor.execute(sql)
      records = cursor.fetchall()
      with open('Report.csv', 'a') as f:
          writer = csv.writer(f, delimiter=',')
          for row in records:
              writer.writerow(row)
      connection.commit()
      end = time.time()
      row_count = sum(1 for row in records)
      print "Done Executing:", filename
      print "Number of rows returned:", row_count
      print "Time elapsed to run the query:",str((end - start)*1000) + ' ms'
      print "\t ==============================="
  
  def main():    
      connection = psycopg2.connect("host='localhost' dbname='central' user='postgres' password='tpltrakker'")
      run_sql_file("script.sql", connection)
      connection.close()
  
  if __name__ == "__main__":
      main()
  </code></pre>
  
  <p>What is wrong with my code?</p>