I've tried using it but I failed. I made my model classes inherit 
ComparableEntity. Unfortunately comparison of persistent object with the 
non-persistent fails, as the former has unicode string while the latter 
does not. How can I fix it?

Marcin

On Monday, February 24, 2014 1:13:49 PM UTC+1, Simon King wrote:
>
> On Mon, Feb 24, 2014 at 11:59 AM,  <[email protected] <javascript:>> 
> wrote: 
> > Hi 
> > 
> > Is there a way to compare mapped objects by values and not by identity? 
> I 
> > want to create an instance of some mapped class, set its attributes 
> > (including relationship one to many) to some values and then ask 
> SQLAlchemy 
> > to check if there is such object in database. 
> > 
> > Let me explain wider context of what I am trying to do. I am writing 
> > component test for my application. The test should create a set of data, 
> > save the data in .csv file, make application read the file and then 
> verify 
> > that proper records were inserted into database. So I was going to use 
> > classes that are mapped to database as my model, create some objects, 
> set 
> > their attributes, create .csv file based on these objects and then use 
> the 
> > objects to check if data was properly stored in database. 
> > 
> > A more precise example. Let's assume we have two classes: 
> > 
> > class User(Base): 
> >     __tablename__ = 'users' 
> > 
> >     id = Column(Integer, primary_key=True) 
> >     name = Column(String) 
> >     fullname = Column(String) 
> >     password = Column(String) 
> >     addresses = relationship("Address", order_by="Address.id", 
> > backref="user") 
> > 
> > class Address(Base): 
> >      __tablename__ = 'addresses' 
> > 
> >      id = Column(Integer, primary_key=True) 
> >      email_address = Column(String, nullable=False) 
> >      user_id = Column(Integer, ForeignKey('users.id')) 
> > 
> > I want to create instance of User, set its name, fullname, password and 
> add 
> > a few addresses. Now I want to query database for object with exactly 
> the 
> > same properties including same addresses. How can I do it? Is it 
> possible to 
> > avoid explicit comparisons of each field? 
> > 
> > Regards 
> > Marcin 
> > 
>
> The SQLAlchemy unit tests use a mixin class called ComparableEntity 
> which would allow you to compare an object you've just constructed 
> with one you've loaded from the database: 
>
>
> https://bitbucket.org/zzzeek/sqlalchemy/src/8b58c6adc2f000f6ce69e8107d10af3ee6e304ba/lib/sqlalchemy/testing/entities.py?at=master#cl-35
>  
>
> However, it would require you to load the object that you want to 
> compare against from the database. This is more complicated given that 
> you want to compare related objects as well, but perhaps it would be 
> fine if you were to query the "primary" object (eg. User in your 
> example above) and then allow SA to load the associated Addresses 
> automatically. 
>
> Hope that helps, 
>
> Simon 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to