Re: [sqlalchemy] mapper.order_by deprecated?

2017-05-09 Thread mike bayer
well, a "default", I disagree the problem is that simple.   Because we 
have a "default", Mapper.order_by, but all those cases I mentioned, no idea.


If we wanted to say that hey, "default" only means, "I'm querying for a 
single entity in full, alone, otherwise no order_by", I guess that's 
something.   I can un-deprecate mapper.order_by if people wanted to 
really work out what it should do always.


Anyway, if "default" is really something kind of arbitrary here, you can 
use the before_compile event hook for Query.


from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import event

Base = declarative_base()


class A(Base):
__tablename__ = 'a'
id = Column(Integer, primary_key=True)


default_order_by = {
A: A.id
}


@event.listens_for(Query, "before_compile", retval=True)
def _default_order_by(query):
entity = query.column_descriptions[0]['entity']
if entity in default_order_by:
query = query.order_by(default_order_by[entity])
return query

e = create_engine("sqlite://", echo=True)
Base.metadata.create_all(e)


s = Session(e)
s.add_all([A(id=1), A(id=2)])
s.commit()

s.query(A).all()

On 05/09/2017 03:36 AM, Chris Withers wrote:
Gotcha. Is there any way to specify a default ordering for queries 
against a model?


(similar to that offered by the Django ORM?)

cheers,

Chris


On 08/05/2017 23:51, mike bayer wrote:
because, it only works for a really simplistic case, and for all the 
other cases, I have no idea what it currently does, nor what it should 
do.


Assume A and B have order_by.I have no idea what the output is, or 
should be, for:


s.query(A, B)
s.query(B, A)
s.query(A).join(B)
s.query(A).select_from(B).join(A)
s.query(A, B).select_from(B).join(A)
s.query(A.id)
s.query(A, B.id)
s.query(A.id, B)
s.query(A.id, B.id)
s.query(B.id, A.id)

etc





On 05/08/2017 06:21 AM, Chris Withers wrote:

Hi All,

I see mapper.order_by is deprecated in the latest release. Why is that?

cheers,

Chris







--
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper


http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.


Re: [sqlalchemy] mapper.order_by deprecated?

2017-05-09 Thread Chris Withers
Gotcha. Is there any way to specify a default ordering for queries 
against a model?


(similar to that offered by the Django ORM?)

cheers,

Chris


On 08/05/2017 23:51, mike bayer wrote:
because, it only works for a really simplistic case, and for all the 
other cases, I have no idea what it currently does, nor what it should 
do.


Assume A and B have order_by.I have no idea what the output is, or 
should be, for:


s.query(A, B)
s.query(B, A)
s.query(A).join(B)
s.query(A).select_from(B).join(A)
s.query(A, B).select_from(B).join(A)
s.query(A.id)
s.query(A, B.id)
s.query(A.id, B)
s.query(A.id, B.id)
s.query(B.id, A.id)

etc





On 05/08/2017 06:21 AM, Chris Withers wrote:

Hi All,

I see mapper.order_by is deprecated in the latest release. Why is that?

cheers,

Chris





--
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper


http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.


Re: [sqlalchemy] mapper.order_by deprecated?

2017-05-08 Thread mike bayer
because, it only works for a really simplistic case, and for all the 
other cases, I have no idea what it currently does, nor what it should do.


Assume A and B have order_by.I have no idea what the output is, or 
should be, for:


s.query(A, B)
s.query(B, A)
s.query(A).join(B)
s.query(A).select_from(B).join(A)
s.query(A, B).select_from(B).join(A)
s.query(A.id)
s.query(A, B.id)
s.query(A.id, B)
s.query(A.id, B.id)
s.query(B.id, A.id)

etc





On 05/08/2017 06:21 AM, Chris Withers wrote:

Hi All,

I see mapper.order_by is deprecated in the latest release. Why is that?

cheers,

Chris



--
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper


http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.


[sqlalchemy] mapper.order_by deprecated?

2017-05-08 Thread Chris Withers

Hi All,

I see mapper.order_by is deprecated in the latest release. Why is that?

cheers,

Chris

--
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper


http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.