ideally declarative would try to preserve this ordering for straight columns, for now you can do it like this:


[c.key for c in sorted(inspect(Venue).columns, key=lambda col: col._creation_order)]



On 05/09/2016 09:50 AM, Denis Rykov wrote:
Thanks for quick response. I've tried your approach:

Venue.__table__.columns.keys()
['id', 'name', 'address']

But how I can get class attributes in the same order as real table columns?

On Mon, May 9, 2016 at 8:31 PM, Mike Bayer <[email protected]
<mailto:[email protected]>> wrote:

    not a bad question.  Those attributes are the mapper-assigned
    attributes and I'd guess that because address_ has an alternate
    name, declarative is setting it up in a different step.   The
    attributes on a class can't be ordered in any case.

    To get the real order of columns at the Core level use the table:

    Venue.__table__.columns.keys()



    On 05/09/2016 08:11 AM, Denis Rykov wrote:

        Hello.

        Why "address_" key on first place of list, is it expected behaviour?

        |
          >>> from sqlalchemy.ext.declarative import declarative_base
          >>> from sqlalchemy.inspection import inspect
          >>> from sqlalchemy import Integer, Column, Unicode
          >>>
          >>> Base = declarative_base()
          >>>
          >>>
          >>> class Venue(Base):
        ...     __tablename__ = 'venue'
        ...     id = Column(Integer, primary_key=True)
        ...     name = Column(Unicode, nullable=False)
        ...     address_ = Column('address', Unicode, nullable=False)
        ...
          >>> inspect(Venue).columns.keys()
        ['address_', 'id', 'name']
        |


        --
        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]
        <mailto:sqlalchemy%[email protected]>
        <mailto:[email protected]
        <mailto:sqlalchemy%[email protected]>>.
        To post to this group, send email to [email protected]
        <mailto:[email protected]>
        <mailto:[email protected]
        <mailto:[email protected]>>.
        Visit this group at https://groups.google.com/group/sqlalchemy.
        For more options, visit https://groups.google.com/d/optout.


    --
    You received this message because you are subscribed to a topic in
    the Google Groups "sqlalchemy" group.
    To unsubscribe from this topic, visit
    https://groups.google.com/d/topic/sqlalchemy/k0MrlMBvAls/unsubscribe.
    To unsubscribe from this group and all its topics, send an email to
    [email protected]
    <mailto:sqlalchemy%[email protected]>.
    To post to this group, send email to [email protected]
    <mailto:[email protected]>.
    Visit this group at https://groups.google.com/group/sqlalchemy.
    For more options, visit https://groups.google.com/d/optout.


--
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]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to