The problem is i defined the history class with the following way (examining
the test_versioning file):
----------------------------------------------
Base = declarative_base(metaclass=VersionedMeta)

class User(Base):
    __tablename__ = 'users'

    id = sa.Column(sa.Integer, primary_key=True)
    name = sa.Column(sa.Unicode(12), info={'label': u'Kod Adı'})
    fullname = sa.Column(sa.Unicode(40), info={'label': u'Adı ve Soyadı'})

User_History = User.__history_mapper__.class_

def upgrade():
    User.__table__.create(migrate_engine)

def downgrade():
    User.__table__.drop(migrate_engine)
----------------------------------------------
With the upper mode definition, when i updated a user data, it says that no
users_history table defined.

If in upgrade, add the line "User_History.__table__.create(migrate_engine)",
it says that:
type object 'UserHistory' has no attribute '__table__'

How can i define the models?

Suha


On Mon, Mar 30, 2009 at 12:32, Suha Onay <suhao...@gmail.com> wrote:

> İ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
-~----------~----~----~----~------~----~------~--~---

Reply via email to