title: psycopg2 - Inserting multiple rows that have multiple columns faster
body: <p>I'm trying to insert multiple rows into my database, and currently I do not know a way to insert them all at the same time or any other method which will help save time (sequentially it takes about ~30s for around 300 rows). </p>
  
  <p>My 'rows' are are tuples in a list of tuples (converted into tuple of tuples), e.g. <code>[(col0, col1, col2), (col0, col1, col2), (.., .., ..), ..]</code></p>
  
  <pre><code>def commit(self, tuple):
      cursor = self.conn.cursor()
      for tup in tuple:
          try:
              sql = """insert into "SSENSE_Output" ("productID", "brand", "categoryID", "productName", "price", "sizeInfo", "SKU", "URL", "dateInserted", "dateUpdated")
                values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
  
              cursor.execute(sql, tup)
              self.conn.commit()
          except psycopg2.IntegrityError:
              self.conn.rollback()
              sql = 'insert into "SSENSE_Output" ' \
                    '("productID", "brand", "categoryID", "productName", "price", "sizeInfo", "SKU", "URL", "dateInserted", "dateUpdated")' \
                    'values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) on conflict ("productID") do update set "dateUpdated" = EXCLUDED."dateUpdated"'
              cursor.execute(sql, tup)
              self.conn.commit()
          except Exception as e:
              print(e)
  </code></pre>
  
  <p>I have also tried commiting after the for loop is done, but still results in the same amount of time. Are there any ways to make this insert significantly faster?</p>