I can't figure out the syntax to issue an update, everything I try (attr 
name, column name, attribute) results in "unconsumed column names".

Am I doing something wrong here?


from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.session import Session


dsn = 'sqlite:///foo.db'
engine = create_engine(dsn)
Base = declarative_base(bind=engine)

class Test(Base):
    __tablename__ = 'update_test'
    id = Column(Integer, primary_key=True)
    discriminator = Column('type', String(10))
    value = Column('somevalue', Integer)
    __mapper_args__ = {'polymorphic_on': discriminator}

class MoreTest(Test):
    __tablename__ = 'update_test2'
    __mapper_args__ = {'polymorphic_identity': 'test'}
    id = Column(Integer, ForeignKey('update_test.id'), primary_key=True)
    value2 = Column('somevalue2', Integer)


Base.metadata.drop_all()
Base.metadata.create_all()

session = Session(bind=engine)

test = MoreTest(value=2)
session.add(test)
session.flush()

update1 = {'value': 3}
update2 = {'somevalue': 3}
update3 = {Test.value: 3}
update4 = {MoreTest.value: 3}

query_base = session.query(MoreTest).filter(MoreTest.id==test.id)

try:
    query_base.update(update1)
except Exception as e:
    session.rollback()
    print e # Unconsumed column names: value

try:
    query_base.update(update2)
except Exception as e:
    session.rollback()
    print e # Unconsumed column names: somevalue

try:
    query_base.update(update3)
except Exception as e:
    session.rollback()
    print e # Unconsumed column names: somevalue

try:
    query_base.update(update4)
except Exception as e:
    session.rollback()
    print e # Unconsumed column names: somevalue

-- 
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 post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to