Thanks for the recipe.I faced with an error.

The model is now:
------------------------------------------------------------------------------
from history_meta import VersionedMeta

Base = declarative_base(metaclass=VersionedMeta)

class User(Base):
    __tablename__ = 'users'

    id = sa.Column(sa.Integer, primary_key=True)
    name = sa.Column(sa.Unicode(12))
    fullname = sa.Column(sa.Unicode(40))
    password = sa.Column(sa.Unicode(20))
    active = sa.Column(sa.Boolean())
    type = sa.Column(sa.SmallInteger())
    note = sa.Column(sa.Text())
    date_created = sa.Column(sa.Date())
------------------------------------------------------------------------------
Session = sessionmaker(bind=engine, autocommit=False, autoflush=True,
expire_on_commit=False, extension=VersionedListener())
------------------------------------------------------------------------------

When inserting a new user, the error occurs:
sqlite3: <class 'sqlalchemy.exc.IntegrityError'> -=> ('(IntegrityError)
users.version may not be NULL',)
postgre: <class 'sqlalchemy.exc.IntegrityError'> -=> ('(IntegrityError) null
value in column "version" violates not-null constraint\n',)

The code in history_meta creates the column version with default value 1:
cls.version = Column('version', Integer, default=1, nullable=False)

What is the reason?
Thanks.

Suha



On Wed, Mar 25, 2009 at 17:17, Michael Bayer <mike...@zzzcomputing.com>wrote:

>
> I've placed a recipe for this on the wiki at
> http://www.sqlalchemy.org/trac/wiki/UsageRecipes/LogVersions
>  .
>
>
> On Mar 25, 2009, at 10:12 AM, Suha Onay wrote:
>
> >
> > Hi,
> >
> > I am using sqlalchemy for a while in a project.
> > The project has lots of models like User:
> >
> ------------------------------------------------------------------------------
> > from mcmodel import MCModel
> >
> > Base = declarative_base()
> >
> > class User(MCModel, Base):
> >    __tablename__ = 'users'
> >
> >    id = sa.Column(sa.Integer, primary_key=True)
> >    name = sa.Column(sa.Unicode(12))
> >    fullname = sa.Column(sa.Unicode(40))
> >    password = sa.Column(sa.Unicode(20))
> >    active = sa.Column(sa.Boolean())
> >    type = sa.Column(sa.SmallInteger())
> >    note = sa.Column(sa.Text())
> >    date_created = sa.Column(sa.Date())
> >
> ------------------------------------------------------------------------------
> > All of these models inherit from MCModel (nothing doing special).
> >
> > I want to save all the changes done to a user in a seperate db table
> > like "_hist_users".
> > The new inserts do not need to be in the hist table.
> > When a user is updated, the old data of the user will be copied to the
> > hist table with a column declaring this is an update operation.
> > When a user is deleted, the old data of the user will be moved to the
> > hist table with a column declaring this is a delete operation.
> > With these operations, it is possible to know who modified what and
> > when.
> >
> > How can i achieve in this?
> > By modifying the MCModel to enable all the models aware of history
> > backup?
> > Or using class sqlalchemy.orm.interfaces.MapperExtension.after_update
> > methods? (i do not know how)
> > Or anything else?
> >
> > Thanks in advance.
> >
> > Suha
> >
> >
> >
> >
> >
> >
> > >
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to