İnstalled nose and tested: no error It is OK now. To make it easy for the developers not to care about the history tables and versioning, is it possible not to define _history models manually and make history_meta to generate them automatically?
Suha On Fri, Mar 27, 2009 at 20:09, Michael Bayer <mike...@zzzcomputing.com>wrote: > > > install nose and type "nosetests". > > > Suha Onay wrote: > > > > The version is ok: 0.5.3 > > The problem is I don't know how to do the unit tests: no tests package. > > from tests import eq_, Comparable > > > > How can i do the unit tests? > > > > Suha > > > > > > > > > > On Thu, Mar 26, 2009 at 19:04, Michael Bayer <mike...@zzzcomputing.com> > > wrote: > >> > >> not sure. make sure you're on 0.5.3. do the unit tests included > >> with > >> the recipe pass ? > >> > >> > >> Suha Onay wrote: > >>> 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 -~----------~----~----~----~------~----~------~--~---