[Sqlalchemy-tickets] Issue #3480: abstractconcretebase regression with setting up columns via name
Brought to you by:
zzzeek
|
From: Mike B. <iss...@bi...> - 2015-07-09 15:30:37
|
New issue 3480: abstractconcretebase regression with setting up columns via name vs. attribute name https://bitbucket.org/zzzeek/sqlalchemy/issues/3480/abstractconcretebase-regression-with Mike Bayer: without the "key" workarounds uncommented, this fails: ``` #!python from sqlalchemy.ext.declarative import declarative_base, AbstractConcreteBase from sqlalchemy.ext.declarative.api import declared_attr from sqlalchemy.orm.mapper import configure_mappers from sqlalchemy.orm.session import Session from sqlalchemy.sql.schema import Column, ForeignKey from sqlalchemy.sql.sqltypes import Date, String, Integer Base = declarative_base() class Company(Base): __tablename__ = 'companies' id = Column(Integer, primary_key=True) class Document(object): date = Column(Date) documentType = Column('documenttype', String) #, key="documentType") class ContactDocument(AbstractConcreteBase, Base, Document): contactPersonName = Column('contactpersonname', String) #, key="contactPersonName") salesPersonName = Column(String) sendMethod = Column('sendmethod', String) #, key="sendMethod") @declared_attr def company_id(self): return Column(ForeignKey('companies.id')) class Offer(ContactDocument): __tablename__ = 'offers' id = Column(Integer, primary_key=True) class SalesOrder(ContactDocument): __tablename__ = 'orders' id = Column(Integer, primary_key=True) configure_mappers() session = Session() query = session.query(ContactDocument) print(query) ``` ``` #! File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/mapper.py", line 627, in __init__ self._configure_properties() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/mapper.py", line 1284, in _configure_properties self._configure_property(key, prop, False) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/mapper.py", line 1525, in _configure_property prop = self._property_from_column(key, prop) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/mapper.py", line 1679, in _property_from_column "attribute." % (key, self, c)) sqlalchemy.exc.ArgumentError: When configuring property 'documentType' on Mapper|ContactDocument|pjoin, column 'documenttype' is not represented in the mapper's table. Use the `column_property()` function to force this column to be mapped as a read-only attribute. ``` |