フォーティー:の並べ替えを達成するための3つの方法のSQLAlchemyのデータベース

 

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__下的排序规则

 

おすすめ

転載: www.cnblogs.com/zhongyehai/p/11827011.html