### 排序:
1. order_by:能夠指定根據這個表中的某個字段進行排序,若是在前面加了一個-,表明的是降序排序。
2. 在模型定義的時候指定默認排序:有些時候,不想每次在查詢的時候都指定排序的方式,能夠在定義模型的時候就指定排序的方式。有如下兩種方式:
* relationship的order_by參數:在指定relationship的時候,傳遞order_by參數來指定排序的字段。
* 在模型定義中,添加如下代碼:python
__mapper_args__ = {
"order_by": title
}mysql
便可讓文章使用標題來進行排序。
3. 正序排序與倒序排序:默認是使用正序排序。若是須要使用倒序排序,那麼能夠使用這個字段的`desc()`方法,或者是在排序的時候使用這個字段的字符串名字,而後在前面加一個負號。sql
1 #encoding: utf-8 2 3 from sqlalchemy import create_engine,Column,Integer,Float,Boolean,DECIMAL,Enum,Date,DateTime,Time,String,Text,func,and_,or_,ForeignKey,Table 4 from sqlalchemy.dialects.mysql import LONGTEXT 5 from sqlalchemy.ext.declarative import declarative_base 6 from sqlalchemy.orm import sessionmaker,relationship,backref 7 # 在Python3中才有這個enum模塊,在python2中沒有 8 import enum 9 from datetime import datetime 10 import random 11 12 HOSTNAME = '127.0.0.1' 13 PORT = '3306' 14 DATABASE = 'first_sqlalchemy' 15 USERNAME = 'root' 16 PASSWORD = 'root' 17 18 # dialect+driver://username:password@host:port/database 19 DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8mb4".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE) 20 21 engine = create_engine(DB_URI) 22 23 Base = declarative_base(engine) 24 25 session = sessionmaker(engine)() 26 27 class User(Base): 28 __tablename__ = 'user' 29 id = Column(Integer, primary_key=True, autoincrement=True) 30 username = Column(String(50),nullable=False) 31 32 33 class Article(Base): 34 __tablename__ = 'article' 35 id = Column(Integer, primary_key=True, autoincrement=True) 36 title = Column(String(50), nullable=False) 37 create_time = Column(DateTime,nullable=False,default=datetime.now) 38 uid = Column(Integer,ForeignKey("user.id")) 39 40 author = relationship("User",backref=backref("articles", order_by=create_time.desc())) 41 42 __mapper_args__ = { 43 "order_by": create_time.desc() 44 } 45 46 def __repr__(self): 47 return "<Article(title:%s,create_time:%s)>" % (self.title,self.create_time) 48 49 50 # Base.metadata.drop_all() 51 # Base.metadata.create_all() 52 # 53 # article1 = Article(title='title1') 54 # user = User(username='zhiliao') 55 # user.articles = [article1] 56 # session.add(user) 57 # session.commit() 58 # 59 # import time 60 # time.sleep(2) 61 # 62 # article2 = Article(title='title2') 63 # user.articles.append(article2) 64 # session.commit() 65 66 # 正序排序 67 # 倒序排序 68 # articles = session.query(Article).all() 69 # print(articles) 70 71 user = session.query(User).first() 72 print(user.articles)