[Openstack] using objects returned from DB layer

Mark Washenberger mark.washenberger at rackspace.com
Thu Dec 15 21:25:54 UTC 2011


The only thing I see that ties us to sqlalchemy is using the model objects directly. But I think there are actually three choices here: sqlalchemy objects, dicts, and regular objects. Well really there are four, if we include sqlalchemy objects that try to act like dicts :-). My preference order is:

1. regular objects (which is what I thought Kevin was talking about. . . maybe?)
2. regular dicts
3. a tie between sqlalchemy objects and sqlalchemy objects that try to behave like dicts

"Devin Carlen" <devin.carlen at gmail.com> said:

> Matt, that answer is simple: so we can use things other than sqlalchemy.
> 
> 
> 
> On Dec 15, 2011, at 10:35 AM, Matt Dietz wrote:
> 
>> I have to confess to being confused here. We deliberately chose
>> sqlalchemy. Then we mapped everything away so it didn't look like the ORM
>> in question when in reality, we partially took some of said ORM's job away
>> from it. Now we're complaining that the ORM we likely aren't using
>> correctly isn't working for us. In short, we chose to use an ORM, and now
>> we're complaining about the O
>>
>> I'm not seeing what taking everything to a dictionary-centric model buys
>> us, and I also don't see anyone actually justifying it. Can we get some
>> actual examples of why one approach is better than the other?
>>
>>
>> On 12/15/11 10:54 AM, "Johannes Erdfelt" <johannes at erdfelt.com> wrote:
>>
>>> On Thu, Dec 15, 2011, Kevin L. Mitchell <kevin.mitchell at rackspace.com>
>>> wrote:
>>>>     2. However, I violently disagree with the idea that the DB layer
>>>>        must return dicts.  It does not, even if you start talking about
>>>>        allowing use of other kinds of databases.  We can, and should,
>>>>        wrap these things in objects, upon which we can call methods
>>>>        that do thingsā€¹i.e., we should, you know, actually use
>>>>        object-oriented programming.
>>>
>>> What kinds of things?
>>>
>>> I'm not against returning back a standardized object that provides
>>> __getattr__ so we don't have to use dict notation. Any database backend
>>> can do something similar easily.
>>>
>>> I'm just trying to better understand what is object-oriented about the
>>> data returned from a database? What methods would we want to use?
>>>
>>> JE
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to     : openstack at lists.launchpad.net
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack at lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack at lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp
> 






More information about the Openstack mailing list