I am using SQLAlchemy 1.4.2 and have been encountering this strange error
message which I've managed to boil down to this minimal example:
import sqlalchemy as sa
from sqlalchemy.orm import declarative_base, relationship
Base = declarative_base()
class Parent(Base):
__tablename__ = "parent"
id = sa.Column(sa.Integer, primary_key=True)
class Child(Base):
__tablename__ = "child"
id = sa.Column(sa.Integer, primary_key=True)
parent_id = sa.Column(sa.Integer, sa.ForeignKey("parent.id"))
parent = relationship("Parent")
statement = sa.select([Child.id]).join(Child.parent).where(Parent.id ==
sa.bindparam("id"))
statement = statement.params(id=10)
The call to statement.params(...) is throwing the following stacktrace. Can
anyone tell me what I'm doing wrong?
Traceback (most recent call last):
File "test_sqlalchemy_error.py", line 20, in <module>
statement = statement.params(id=10)
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line
346, in params
return self._replace_params(False, optionaldict, kwargs)
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line
363, in _replace_params
return cloned_traverse(self, {}, {"bindparam": visit_bindparam})
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line
742, in cloned_traverse
obj = clone(obj, deferred_copy_internals=deferred_copy_internals)
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line
735, in clone
newelem._copy_internals(clone=clone, **kw)
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/selectable.py",
line 5208, in _copy_internals
clone=clone, omit_attrs=("_from_obj",), **kw
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/traversals.py",
line 718, in _copy_internals
result = meth(attrname, self, obj, **kw)
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/traversals.py",
line 777, in visit_setup_join_tuple
for (target, onclause, from_, flags) in element
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/traversals.py",
line 777, in <genexpr>
for (target, onclause, from_, flags) in element
File ".venv/lib/python3.7/site-packages/sqlalchemy/sql/visitors.py", line
736, in clone
meth = visitors.get(newelem.__visit_name__, None)
File ".venv/lib/python3.7/site-packages/sqlalchemy/orm/attributes.py",
line 308, in __getattr__
replace_context=err,
File ".venv/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line
198, in raise_
raise exception
AttributeError: Neither 'QueryableAttribute' object nor 'Comparator' object
associated with Child.parent has an attribute '__visit_name__'
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sqlalchemy/e1696eff-495e-4db9-a88a-cc385bbc8690n%40googlegroups.com.