python三种排序_三种排序方式

#encoding: utf-8

fromsqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,Text,\

ForeignKey,DateTimefromsqlalchemy.ext.declarative import declarative_basefromsqlalchemy.orm import sessionmaker,relationship,backreffromrandom import randintfromdatetime import datetime

HOSTNAME= '127.0.0.1'PORT= 3306DATABASE= 'first_sqlalchemy'USERNAME= 'root'PASSWORD= '123456'#dialect+driver://username:password@host:port/database

DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/"\"{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)

engine=create_engine(DB_URI)

Base=declarative_base(engine)

# Session=sessionmaker(engine)

# session=Session()

session= sessionmaker(engine)() #Session(**local_kw)

#第三种排序方式根据一对多,多对对关系,进行排序,排序只能作用在多的关系上,classUser(Base):

__tablename__= 'user'id= Column(Integer, primary_key=True, autoincrement=True)

username= Column(String(50),nullable=False)classArticle(Base):

__tablename__= 'article'id= Column(Integer,primary_key=True,autoincrement=True)

title= Column(String(50),nullable=False)

create_time= Column(DateTime,nullable=False,default=datetime.now)#datetime.now不能加括号,是文章生成插入数据库的时间

uid= Column(Integer,ForeignKey('user.id'))

#第三种排序方式,跟relationship结合使用,作用多的关系上

author= relationship("User",back_ref=backref('articles',order_by=create_time.desc()))

#第二种排序方式,使用魔术属性

__mapper_args__={"order_by": create_time.desc()

}

def __repr__(self):return ''.format(self.title,self.create_time)

# Base.metadata.drop_all()

# Base.metadata.create_all()

# article= Article(title='123456')

# session.add(article)

# session.commit()

#一个order_by根据文章的发表时间进行查询

#字段前没有减号(-)就是升序排列

#字段前有减号(-)就是降序排列

# article= session.query(Article).order_by(-Article.create_time).all()

#或使用desc,来倒序

# article= session.query(Article).order_by(-Article.create_time.desc).all()

#或用字段名来倒叙

# article= session.query(Article).order_by("-create_time").all()

# print(article)"""SELECT article.id AS article_id, article.title AS article_title,

article.create_time AS article_create_time

FROM article ORDER BY article.create_time"""#使用第二种排序方式试一试

articles=session.query(Article).all()

print(articles)#测试是可以的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值