it automatically detects correct order of object creation and linkage, so all constraint definitions are being left intact. Module does work on OpenObject application server level rather than database level, so all the data are pumped in through (and validated) the application server. Once you have set up your migration scenario, you have working data in new database.
Ok, this approach is slower than working on database level, but it is possible to migrate just some of the data, for example, not touching or just update the data created in the database initialization step.
And, of course, you define your scenario from OpenERP UI, not coding dirty single use disposable scripts, because from base to base most of scenarios are reusable. There may be need for python code snippets, but they are placed from UI where they are going to be applied (just for truncating data, merging several objects or splitting one object to several), this is in case of more complicated scenarios.