Reputation: 584
How do I omit a table attribute from being included upon insertion?
I have the following class:
class PurchaseOrder(Base):
__tablename__ = 'PPurchaseOrder'
id = Column('PurchaseOrderId', Integer, Sequence('transactions_id_seq'), primary_key = True)
code = Column(String(50))
ris_id = Column('RisId', Integer, ForeignKey('BRIS.RisId'))
creator = Column('CreatedBy', String(256))
created = Column('CreateDate', DateTime)
date_needed = Column('DateNeeded', DateTime)
timestamp = Column('Timestamp', TIMESTAMP)
supplier_items = AssociationProxy('purchase_order_items', 'supplier_item', creator='SupplierItem')
purchase_order_items = relationship('PurchaseOrderItem', cascade="all, delete, delete-orphan",
backref='purchase_order', lazy='joined')
def __init__(self, code, created, date_needed):
self.code = code
self.creator = 'Marco'
self.created = created
self.date_needed = date_needed
When trying to add an object, it does the following insert statement:
2011-06-30 22:37:26,953 INFO sqlalchemy.engine.base.Engine INSERT INTO [PPurchaseOrder] (code, [RisId], [CreatedBy], [CreateDate], [DateNeeded], [Timestamp]) OUTPUT inserted.[PurchaseOrderId] VALUES (?, ?, ?, ?, ?, ?)
2011-06-30 22:37:26,953 INFO sqlalchemy.engine.base.Engine ('POF000872008', None, 'Marco', datetime.datetime(2008, 5, 27, 8, 47, 18), datetime.datetime(2008, 5, 28, 15, 48), None)
I want the Timestamp
column out so that the insert statement would look like this:
2011-06-30 22:37:26,953 INFO sqlalchemy.engine.base.Engine INSERT INTO [PPurchaseOrder] (code, [RisId], [CreatedBy], [CreateDate], [DateNeeded]) OUTPUT inserted.[PurchaseOrderId] VALUES (?, ?, ?, ?, ?, ?)
2011-06-30 22:37:26,953 INFO sqlalchemy.engine.base.Engine ('POF000872008', None, 'Marco', datetime.datetime(2008, 5, 27, 8, 47, 18), datetime.datetime(2008, 5, 28, 15, 48))
Upvotes: 2
Views: 643
Reputation: 15876
IIRC, providing default
or server_default
argument will move the value generation to the server side. See here for more
Upvotes: 1