Thread: [SQLObject] Instanciating objects as strings giving different results from ints
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Ken K. <ke...@ke...> - 2003-12-11 23:11:50
|
I'm having a bit of confusion here. It seems that if you instanciate a SQLObject with a string, and another with an int, even of those are the same row, they are not evaluated as being the same object. Example code: >>> class MyClass(SQLObject): ... field = StringCol(length=20) ... >>> MyClass.createTable() >>> MyClass.new(field='spam') <MyClass 1 field='spam'> >>> MyClass.new(field='eggs') <MyClass 2 field='eggs'> >>> spam = MyClass(1) >>> spam2 = MyClass('1') >>> spam2 is spam False Shouldn't SQLObject know to cast the id to an int? Thanks Ken |
From: Sidnei da S. <si...@aw...> - 2003-12-11 23:43:18
|
On Thu, Dec 11, 2003 at 05:26:56PM -0600, Ken Kinder wrote: | I'm having a bit of confusion here. It seems that if you instanciate a | SQLObject with a string, and another with an int, even of those are the | same row, they are not evaluated as being the same object. Example code: | | >>> class MyClass(SQLObject): | ... field = StringCol(length=20) | ... | >>> MyClass.createTable() | >>> MyClass.new(field='spam') | <MyClass 1 field='spam'> | >>> MyClass.new(field='eggs') | <MyClass 2 field='eggs'> | >>> spam = MyClass(1) | >>> spam2 = MyClass('1') | >>> spam2 is spam | False | | Shouldn't SQLObject know to cast the id to an int? This has been asked in the list around two months ago. Search the archives. -- Sidnei da Silva <si...@aw...> http://awkly.org - dreamcatching :: making your dreams come true http://plone.org/about/team#dreamcatcher All language designers are arrogant. Goes with the territory... -- Larry Wall |
From: Ian B. <ia...@co...> - 2003-12-12 16:39:13
|
On Dec 11, 2003, at 5:26 PM, Ken Kinder wrote: > I'm having a bit of confusion here. It seems that if you instanciate a > SQLObject with a string, and another with an int, even of those are the > same row, they are not evaluated as being the same object. Example > code: > >>>> class MyClass(SQLObject): > ... field = StringCol(length=20) > ... >>>> MyClass.createTable() >>>> MyClass.new(field='spam') > <MyClass 1 field='spam'> >>>> MyClass.new(field='eggs') > <MyClass 2 field='eggs'> >>>> spam = MyClass(1) >>>> spam2 = MyClass('1') >>>> spam2 is spam > False > > Shouldn't SQLObject know to cast the id to an int? It could, except now you can have non-int IDs too, and we haven't added a way to declare which one you are using. Anyway, for the moment try: class MyClass(SQLObject): def _init(self, id, connection=None): SQLObject._init(self, int(id), connection=connection) -- Ian Bicking | ia...@co... | http://blog.ianbicking.org |