Parece que está sobrescribiendo el primer valor después del segundo reemplazo. Espero encadenar el .replace
funciona:
@event.listens_for(Table, "column_reflect")
def reflect_col(inspector, table, column_info):
column_info['key'] = column_info['name'].replace(' ', '_').replace('1st_time', 'secondcheck')
[EDITAR]: También debe asegurarse de que los cambios no entren en conflicto.
Debido a que en este ejemplo, el primer cambio reemplaza los espacios con guiones bajos, debe adaptar el segundo reemplazo, ya que se llama 1st_time
cuando se llama al segundo reemplazo.