support server default for version_id_col

Issue #2793 resolved
Mike Bayer repo owner created an issue
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)
    data = Column(String)
    version_id = Column('xmin', Integer,
                        server_default=FetchedValue(),
                        server_onupdate=FetchedValue())

    __mapper_args__ = {
        "version_id_col": version_id,
        "version_id_generator": lambda val: None,
        # "eager_defaults": True  # should not be needed
    }

# should work whether or not this is set
#    __table_args__ = {"implicit_returning": False}

engine = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
Base.metadata.drop_all(engine)
engine.execute("create table a (id serial primary key, data varchar)")


s = Session(engine)

a1 = A(data='a1')

s.add(a1)

s.flush()

a1.data = 'a2'

s.flush()

Comments (4)

  1. Log in to comment