SQLAlchemyのは、注文達成するための3つの方法があり
ORDER_BY:このメソッドを使用したクエリがフィールドモデルやの属性に基づいてソート
2:モデル定義、指定された順序
3:1を何度に、ORDER_BYの関係パラメータは、
準備
カラムからのインポートcreate_engineのSQLAlchemyの、整数、文字列、フロート、テキストは、ForeignKeyの
sqlalchemy.ext.declarativeインポートからはdeclarative_base
sqlalchemy.ormインポートsessionmaker、リレーションシップ、後方参照から
#データベース情報
ホスト=「127.0.0.1」
ポート=「3306」
データベース= 'db_to_sqlalchemy'
ユーザ名= 'ルート'
パスワード= '123456'
のデータベースにデータベース#+型接続は、pymysqlは本明細書で使用されるウィジェット
DB_URI = f'mysql + pymysql:// {ユーザー名}:{パスワード} @ {ホスト}:{ }ポート/データベース{} '
エンジン= create_engine(DB_URI)エンジン#作成
ベース= declarative_base(エンジン)#基本クラスを作成declarative_base使用
)(= sessionmaker(エンジン)セッションを
Articleクラス(ベース):
__tablename__ = 'アーティクル'
ID =列(整数、PRIMARY_KEY = Trueの場合、自動インクリメント=真)
タイトル=列(文字列(50)、NULL可能= False)が
CREATE_TIME =列(日時、NULL可能= Falseの場合、デフォルト= datetime.now)
DEF __repr __(自己):
戻りf'title:{self.title}、CREATE_TIME:{self.create_time}
Base.metadata.drop_all()#删除所有表
Base.metadata.create_all()#创建表
1条=条(タイトル= 'TITLE1')
session.add(1条)
session.commit()
time.sleep(1)
article2 =条(タイトル= 'のtitle2')は
session.add(article2)
session.commit()
A:ORDER_BY:クエリがフィールドまたはモデルの属性に応じてソートされたときに、このメソッドを使用します
デフォルトの昇順
リバース:DESCを()
または使用sqlalchemy.desc
2:ときに、モデルの定義、指定された順序
上昇
リバース
Articleクラス(ベース):
__tablename__ = 'アーティクル'
ID =列(整数、PRIMARY_KEY = Trueの場合、自動インクリメント=真)
タイトル=列(文字列(50)、NULL可能= False)が
CREATE_TIME =列(日時、NULL可能= Falseの場合、デフォルト= datetime.now)
__mapper_args__ = {
'ORDER_BY':create_time.desc()
}
DEF __repr __(自己):
戻りf'title:{self.title}、CREATE_TIME:{self.create_time}
3:何回に1、ORDER_BYの関係パラメータ
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(50), nullable=False)
class Article(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)
uid = Column(Integer, ForeignKey('user.id'))
author = relationship('User', backref=backref('article', order_by=create_time.desc()))
# __mapper_args__ = {
# 'order_by': create_time
# }
def __repr__(self):
return f'title: {self.title}、create_time: {self.create_time}'
升序
若未在backref中指定排序规则,则会找__mapper_args__下的排序规则