Apart from putting unicode strings on your non-persistent object, you mean?

What version of Python are you using? Under Python 2, I would expect a
unicode string to compare equal to a non-unicode string as long as the
contents are equivalent.

ie.

   >>> "abcdefg" == u"abcdefg"
   True

(On Python 3 it might be more complicated, but I don't use Python 3 so
I can't really help you.)

If you are using Python 2 and the strings don't compare equal, perhaps
you have an incorrect encoding defined somewhere?

Simon

On Mon, Feb 24, 2014 at 12:59 PM,  <marcin.rafal.adam...@gmail.com> wrote:
> 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,  <marcin.raf...@gmail.com> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
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