title: Expecting string or bytes object
body: <p>I am taking an excel spreadsheet, loading into a Pandas Dataframe then appending the data frame to an Oracle table.</p>
  
  <p>Any potentially sensitive data is starred.</p>
  
  <pre><code>import os
  import pandas as pd
  import cx_Oracle
  from tkinter import Tk
  from tkinter.filedialog import askopenfilename
  from sqlalchemy import create_engine
  
  #Gets excel file and writes to dataframe
  Tk().withdraw()
  filename = askopenfilename()
  xl = pd.ExcelFile(filename)
  print(xl.sheet_names)
  ws = input('Type a sheet name to load: \n')
  dFrame = xl.parse(ws)
  
  #create engine connection
  engine = create_engine('oracle+cx_oracle://*********')
  print("Engine created")
  
  with engine.begin() as conn:
      conn.execute("DELETE FROM table")
  print("Delete from executed")
  
  #Write dataframe to table
  dFrame.to_sql('table',con=engine, if_exists='append', index=False)
  print("Data frame appended to table")
  </code></pre>
  
  <p>However, I get error <code>TypeError: expecting string or bytes object</code> (full trace below), I believe this means there is a column in the dataframe which does not match the existing table type.</p>
  
  <p>If that is the case, how can I find which section of the dataframe is causing a problem?</p>
  
  <pre><code>Traceback (most recent call last):
    File "C:\Users\*****\Documents\CD\Test.py", line 26, in &lt;module&gt;
      dFrame.to_sql('table',con=engine, if_exists='append', index=False)
    File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\generic.py", line 2130, in to_sql
      dtype=dtype)
    File "C:\Users\*****\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 450, in to_sql
      chunksize=chunksize, dtype=dtype)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 1127, in to_sql
      table.insert(chunksize)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 641, in insert
      self._execute_insert(conn, keys, chunk_iter)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\sql.py", line 616, in _execute_insert
      conn.execute(self.insert_statement(), data)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 948, in execute
      return meth(self, multiparams, params)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\sql\elements.py", line 269, in _execute_on_connection
      return connection._execute_clauseelement(self, multiparams, params)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1060, in _execute_clauseelement
      compiled_sql, distilled_params
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1200, in _execute_context
      context)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1416, in _handle_dbapi_exception
      util.reraise(*exc_info)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\util\compat.py", line 249, in reraise
      raise value
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\engine\base.py", line 1170, in _execute_context
      context)
    File "C:\Users\******\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sqlalchemy\dialects\oracle\cx_oracle.py", line 969, in do_executemany
      cursor.executemany(statement, parameters)
  TypeError: expecting string or bytes object
  </code></pre>
  
  <p>EDIT:</p>
  
  <p>This is the datatypes for each column in pandas and oracle, respectively:</p>
  
  <pre><code>Column1 | int64          | NUMBER(10,0)
  Column2 | object         | VARCHAR2(128 BYTE)
  Column3 | int64          | NUMBER(13,0)
  Column4 | object         | VARCHAR2(128 BYTE)
  Column5 | object         | VARCHAR2(128 BYTE)
  Column6 | float64        | NUMBER(10,0)
  Column7 | object         | VARCHAR2(128 BYTE)
  Column8 | object         | VARCHAR2(128 BYTE)
  Column9 | int64          | NUMBER(5,0)
  Column10| datetime64[ns] | DATE
  Column11| datetime64[ns] | DATE
  Column12| int64          | NUMBER(10,0)
  Column13| float64        | NUMBER(10,0)
  Column14| object         | VARCHAR2(128 BYTE)
  Column15| float64        | NUMBER(10,0)
  </code></pre>
  
  <p>None of those should be causing issues, right?</p>