Hi there, I've been working on migrating our codebase from SQLAlchemy 1.4 to 2.0 and have encountered an issue I can't seem to get around. The error itself is File "/Users/sfh/env/vita/lib/python3.9/site-packages/sqlalchemy/orm/context.py", line 1101, in create_for_statement SelectState.__init__(self, self.statement, compiler, **kw) File "/Users/sfh/env/vita/lib/python3.9/site-packages/sqlalchemy/sql/selectable.py", line 4501, in __init__ self.froms = self._get_froms(statement) File "/Users/sfh/env/vita/lib/python3.9/site-packages/sqlalchemy/sql/selectable.py", line 4599, in _get_froms [ File "/Users/sfh/env/vita/lib/python3.9/site-packages/sqlalchemy/sql/selectable.py", line 4600, in <listcomp> element._from_objects AttributeError: 'NoneType' object has no attribute '_from_objects' (I've shortened this from the entire traceback)
>From the digging around that I've done, it seems to be the ColumnLoader strategy setup_query method sometimes has a value for 'c' of None where an adapter is present but check_for_adapt is False. This is from the c = adapter.columns[c] line. This happens only when called from the JoinedLoader class, it seems the _generate_row_adapter method returns a clauses object with a columns dict that has all the keys from the underlying table, but some of the values are None. All of this behaviour is fairly hard to get to happen however it seems to occur after the warning "Loader depth for query is excessively deep; caching will be disabled for additional loaders. Consider using the recursion_depth feature for deeply nested recursive eager loaders." occurs. This warning comes from a different part of the system where the base level object, 'User', is very deeply nested, and on some later request to a different part of the system, fetching a different 'User' relationship at a less deep level triggers the above error. In our use case we have some fairly deeply nested relationships, 6 or so levels deep, however we never used selectinload or immediateload to my knowledge so there is no way to change the recursion depth. Any help on this would be fantastic, Thanks, Shane -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/f6ee8641-0dc8-4eec-a79e-941ac3d814b9n%40googlegroups.com.