As for the initialization stuff -- yes, that's true; whenever Django models are being imported, you do need to have had `django.setup()` called.
Most people using Django have built their apps as Django apps so this is a "non issue".
The worst way to use Django is to try and fight against the way it was built. For your case specifically, it's probably not a good option.
I'm exploring using Django Channels to send data to visualisation SPA's in realtime. https://channels.readthedocs.io/en/latest/
Django has it's own ORM with a different design philosophy that is optimised for a different use-case to sqlalchemy.
Django's ORM is generally cleaner and more readable for the common case and requires less code to set up. It might be slightly less elegant for more complex cases but it's a trade off that's made me pretty happy on balance.
On my current project we don't use an ORM; just SQL statements and we create classes to match the result set and map into them.
This is why the problem inform the solution, pick the framework (or lack of) that suits your problem best