title: Pandas + MySQL On Duplicate Key Update Broken
body: <p>My ON DUPLICATE UPDATE clause stopped updating and I'm not sure why.</p>
  
  <p>Below is my code to create a temporary table via Pandas:</p>
  
  <pre><code>#connect to mysql database
  engine = sqlalchemy.create_engine('mysql://username:@localhost/db?charset=utf8')
  conn = engine.connect()
  
  #Create df and write to temp table
  df = pd.DataFrame(item_bank,columns=['email','id', 'mbid','artist','track','plays','track_count'])
  df.to_sql(con=conn, name='temp', if_exists='replace',index=False)
  </code></pre>
  
  <p>It successfully creates a MySQL table with all of the data types as 'Text' except for user_tracks which writes as a bigint(20).</p>
  
  <p>I then run this, but the table does not update. It is especially strange to me because I have many scripts that use a similar method, and the only thing I remember changing was to stop updating the other static columns.</p>
  
  <pre><code>mysql_statement = """
      INSERT INTO pickaresk.permanent 
          (email, id, mbid, artist, track, plays, track_count) 
      SELECT * FROM temp
      ON DUPLICATE KEY UPDATE
          plays=temp.plays,
          track_count=temp.track_count,
          lastfm_last_update=NOW() 
      ;
  """
  
  conn.execute(mysql_statement)
  conn.close()
  </code></pre>
  
  <p>The permanent table column's schema that are being updated is shown below. The multiple unique key constraint is the combination of id and email. I also confirmed that there are duplicate keys in both tables</p>
  
  <pre><code>| Field                         | Type         | Null | Key | Default | Extra |
  +-------------------------------+--------------+------+-----+---------+-------+
  |
  | id                            | varchar(255) | NO   |     | NULL    |       |
  | email                         | varchar(120) | NO   | MUL | NULL    |       |
  | mbid                          | varchar(120) | YES  |     | NULL    |       |
  | artist                        | varchar(250) | YES  |     | NULL    |       |
  | track                         | varchar(250) | YES  |     | NULL    |       |
  | plays                         | float        | YES  |     | NULL    |       |
  | track_count                   | int(11)      | YES  |     | NULL    |       |
  | lastfm_last_update            | datetime     | YES  |     | NULL    |       |
  +-------------------------------+--------------+------+-----+---------+-------+
  </code></pre>