On Wed, Jun 25, 2014 at 6:28 AM, Mike Bayer <[email protected]>
wrote:

>
> On 6/25/14, 2:26 AM, Ken Lareau wrote:
>
> On Tue, Jun 24, 2014 at 3:35 PM, Mike Bayer <[email protected]>
> wrote:
>
>>
>> On 6/23/14, 8:09 PM, Ken Lareau wrote:
>> >
>> >     if apptier:
>> >         subq = (
>> >             Session.query(
>> >                 Package.pkg_name,
>> >                 Package.version,
>> >                 Package.revision,
>> >                 AppDefinition.app_type,
>> >                 AppDeployment.environment
>> >             ).join(Deployment)
>> >              .join(AppDeployment)
>> >              .join(AppDefinition)
>> >              .filter(Package.pkg_name == package_name)
>> >              .filter(AppDeployment.environment == env)
>> >              .filter(AppDeployment.status != 'invalidated'))
>> >
>> >         [...]
>> >
>> >         # The actual column name must be used in the subquery
>> >         # usage below; DB itself should be corrected
>> >         versions = (Session.query(subq.c.appType,
>> >                     subq.c.version,
>> >                     subq.c.revision)
>> >                     .group_by(subq.c.appType, subq.c.environment)
>> >                     .all())
>> >
>> > The parts in the subquery work fine, but the access of the 'column'
>> > in the final query leads to this:
>> >
>> > Traceback (most recent call last):
>> >   File "<stdin>", line 1, in <module>
>> >   File "/home/klareau/repos/git/tagopsdb/tagopsdb/deploy/deploy.py",
>> > line 234, in find_deployed_version
>> >     .group_by(subq.c.appType, subq.c.environment)
>> >   File
>> >
>> "/home/klareau/.virtualenvs/tds/lib/python2.6/site-packages/sqlalchemy/util/_collections.py",
>> > line 174, in __getattr__
>> >     raise AttributeError(key)
>> > AttributeError: environment
>> >
>> > This is not completely surprising, but I'm uncertain as the best way
>> > to fix this... help? :)
>>  nothing is obviously wrong, assuming you are calling "subquery()" on
>> subq at the end.  It will be a select() construct which will have a
>> column called ".environment" on the .c. collection because
>> AppDeployment.environment is present.   Can't say why this attribute is
>> not here without full details.
>>
>>
> Oops there were some additional filters I left out, but this is added
> before the final query:
>
>  subq = (subq.order_by(AppDeployment.realized.desc())
>                     .subquery(name='t_ordered'))
>
>  Not sure why it isn't working, but today my coworker an I massively
> rewrote one of the other methods to avoid this same issue, so maybe
> we should try the same for this one... though it would be nice to know
> what I goofed here, but not sure what additional information I can
> give that would help offhand...
>
>
> what are the names that are actually present on subq.c ?   "print
> list(subq.c)" should give an indication.
>
>
Adding that in to the method gave this:

>>> deploy.find_deployed_version('tdstest', 'development', version='9',
apptier=True)
[Column('pkg_name', String(length=255), table=<t_ordered>, nullable=False),
Column('version', String(length=63), table=<t_ordered>, nullable=False),
Column('revision', String(length=63), table=<t_ordered>, nullable=False),
Column('appType', String(length=100), table=<t_ordered>, nullable=False),
<sqlalchemy.sql.elements.ColumnClause at 0x1d20e10; %(30521360 anon)s>]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/klareau/repos/git/tagopsdb/tagopsdb/deploy/deploy.py", line
237, in find_deployed_version
    .group_by(subq.c.appType, subq.c.environment)
  File
"/home/klareau/.virtualenvs/tds/lib/python2.6/site-packages/sqlalchemy/util/_collections.py",
line 174, in __getattr__
    raise AttributeError(key)
AttributeError: environment


-- 
- Ken Lareau

-- 
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/d/optout.

Reply via email to