summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-02-09 15:14:54 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-02-09 15:14:54 -0500
commit34f26ee255bf64cf6de6fb9a5f1285b696fa4bbd (patch)
tree26b00cada5ffb1c7bf56aeb9029b7d3ba74bea2c
parent6f16b8db6f08cefd68cdf251292316497eb849b3 (diff)
downloadsqlalchemy-34f26ee255bf64cf6de6fb9a5f1285b696fa4bbd.tar.gz
- Fixed bug where a column with a SQL or server side default
that was excluded from a mapping with include_properties or exclude_properties would result in UnmappedColumnError. [ticket:1995]
-rw-r--r--CHANGES5
-rw-r--r--lib/sqlalchemy/orm/mapper.py3
-rw-r--r--test/orm/test_mapper.py15
3 files changed, 22 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index cf0c0eb01..dec011438 100644
--- a/CHANGES
+++ b/CHANGES
@@ -218,6 +218,11 @@ CHANGES
from that target. Also emits the correct WHERE criterion
when using single table inheritance. [ticket:2038]
+ - Fixed bug where a column with a SQL or server side default
+ that was excluded from a mapping with include_properties
+ or exclude_properties would result in UnmappedColumnError.
+ [ticket:1995]
+
- sql
- Column.copy(), as used in table.tometadata(), copies the
'doc' attribute. [ticket:2028]
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index db445076c..a6d2c95f5 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -1937,7 +1937,8 @@ class Mapper(object):
if postfetch_cols:
state.expire_attributes(state.dict,
[self._columntoproperty[c].key
- for c in postfetch_cols]
+ for c in postfetch_cols if c in
+ self._columntoproperty]
)
# synchronize newly inserted ids from one table to the next
diff --git a/test/orm/test_mapper.py b/test/orm/test_mapper.py
index 0ee5e44bd..abef6ed18 100644
--- a/test/orm/test_mapper.py
+++ b/test/orm/test_mapper.py
@@ -533,6 +533,21 @@ class MapperTest(_fixtures.FixtureTest):
Foo, inherits=Person, polymorphic_identity='foo',
exclude_properties=('type', ),
)
+ @testing.resolve_artifact_names
+ @testing.provide_metadata
+ def test_prop_filters_defaults(self):
+ t = Table('t', metadata,
+ Column('id', Integer(), primary_key=True, test_needs_autoincrement=True),
+ Column('x', Integer(), nullable=False, server_default='0')
+ )
+ t.create()
+ class A(object):
+ pass
+ mapper(A, t, include_properties=['id'])
+ s = Session()
+ s.add(A())
+ s.commit()
+
@testing.resolve_artifact_names
def test_mapping_to_join_raises(self):