考虑使用dtype参数将SQLAlchemy 类型pandas.DataFrame.to_sql的字典传递给命名列:
import sqlalchemy
data.to_sql(name=table_name, con=engine, if_exists='replace', index=False,
dtype={'name_of_datefld': sqlalchemy.types.DateTime(),
'name_of_intfld': sqlalchemy.types.INTEGER(),
'name_of_strfld': sqlalchemy.types.VARCHAR(length=30),
'name_of_floatfld': sqlalchemy.types.Float(precision=3, asdecimal=True),
'name_of_booleanfld': sqlalchemy.types.Boolean}
参考
python - Pandas to_sql changing datatype in database table - Stack Overflow
python - Pandas to_sql change column type from varchar to text - Stack Overflow