2013-01-16 2 views
5

이제 데이터베이스의 데이터를 해당 속성 1로 정렬합니다. 속성 1의 값이 서로 다른 여러 항목이있는 경우 데이터는 해당 ID로 정렬 된 것처럼 보입니다. 그러나 desc (id)로 정렬하여 연결을 끊고 싶습니다. 어떻게하면 넥타이가있는 경우 데이터베이스의 기본 정렬 기준을 변경할 수 있습니까?sqlalchemy의 기본 정렬 기준은 무엇입니까?

감사합니다.

답변

7

순서는 SQLAlchemy가 아니라 데이터베이스에 의해 결정됩니다. 일반 SQL을 사용하면 추가 ORDER BY 절을 추가 할 수 있습니다. SQLAlchemy ORM에서는 order_by 메서드를 연결하여 동일한 작업을 수행합니다. 예를 들면 다음과 같습니다.

for eq in session.query(Equipment).order_by(Equipment.model_id).order_by(Equipment.name).all(): 
    print (eq) 

어느 것이 든 나머지는 기본 정렬입니다.

+1

BTW, * * DESC를 정렬하는 방법 SQLAlchemy의가 [이 질문]에 대한 답변과 (http://stackoverflow.com/q/4186062/851737). – schlamar

+0

고마워, 이것이 도움이된다 !! – user1909371

8

적어도 SQLAlchemy v0.9.8에서는 mapper configuration을 사용하여이 작업을 수행 할 수 있습니다. 당신은 사용자 테이블이 항상 같은 fullname 무언가에 의해 주문 레코드를 검색 할 경우

해야 작동합니다

from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy import Column, Integer, String 

Base = declarative_base() 

class User(Base): 
    __tablename__ = 'users' 
    id = Column(Integer, primary_key=True) 
    name = Column(String) 
    fullname = Column(String) 
    password = Column(String) 

    __mapper_args__ = { 
     "order_by":fullname 
    } 

    def __repr__(self): 
     return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password) 
+1

매퍼 설정에서 기본 순서를 추가하는 것은 버전 1.1부터 'Query.order_by()'를 명시 적으로 사용하기 때문에 더 이상 사용되지 않습니다. –

관련 문제