[Sqlalchemy-tickets] Issue #4031: eval_none logic isn't resolving col to prop (zzzeek/sqlalchemy)
Brought to you by:
zzzeek
From: Michael B. <iss...@bi...> - 2017-07-18 14:54:46
|
New issue 4031: eval_none logic isn't resolving col to prop https://bitbucket.org/zzzeek/sqlalchemy/issues/4031/eval_none-logic-isnt-resolving-col-to-prop Michael Bayer: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class A(Base): __tablename__ = 'a' id = Column(Integer, primary_key=True) column1 = Column('column1', JSON, nullable=False) _column2 = Column('column2', JSON, nullable=False) e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) Base.metadata.drop_all(e) Base.metadata.create_all(e) session = Session(e) # Succeeds session.add(A(column1=[], _column2=[])) session.flush() # Succeeds session.add(A(column1=None, _column2=[])) session.flush() # Fails with integrity error session.add(A(column1=[], _column2=None)) session.flush() ``` this would be the patch but need to confirm key is always present in _columntoproperty in this context: ``` #!diff diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 1042442..68103d2 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -2020,7 +2020,7 @@ class Mapper(InspectionAttr): ( table, frozenset( - col.key for col in columns + self._columntoproperty[col].key for col in columns if col.type.should_evaluate_none ) ) ``` |