Because ORM attribute access usually trigger requests, and you must design the API so that those requests, which trigger called to the network, don't block.
https://docs.sqlalchemy.org/en/20/orm/queryguide/relationshi...
the older I get the more I'm convinced this should be the default behavior.
Diesel hasn't been providing an async API for reason told in this thread: https://github.com/diesel-rs/diesel/issues/399
The situation might change some day though, once async support in the core language and surrounding ecosystem gets stronger.