基本的な構文:
モデルクラス名.query [フィルタ]。アクチュエータ
一般的に使用されるSQLAlchemyのクエリフィルタ
フィルタ |
説明 |
フィルタ() |
クエリが返す新しい、元のクエリにフィルタを追加します。 |
filter_by() |
クエリが返す新しい、元のクエリと同等のフィルタを追加します。 |
限定 |
元のクエリ結果が返される値指定された定義 |
オフセット() |
クエリによって返された元のクエリの結果から新しいを返すオフセット |
ORDER_BY() |
新しいクエリを返すために、指定された条件に応じて、元のクエリ結果をソート |
GROUP_BY() |
元のクエリの結果は、新しいクエリを返し、指定された基準に従ってグループ化されています |
一般的に使用されるSQLAlchemyのクエリエグゼ
方法 |
説明 |
すべて() |
すべてのリストとしてクエリ結果を返します。 |
最初() |
クエリの最初の結果を返し、見つからない場合は、リターンなし |
first_or_404() |
見つからない場合は、クエリの最初の結果は、404を返します |
取得する() |
存在しない、戻りなし場合、プライマリ・キーに対応する行を返します |
get_or_404() |
404を返し、存在しない場合、プライマリ・キーに対応する行を返します |
カウント() |
クエリ結果の数を返します。 |
paginate() |
戻り値指定された範囲内の結果を含むページ分割オブジェクト |
ケースコード:
#すべての文字データクエリ
印刷(PeopleInfo.query.all())
#のクエリをどのくらいの個人財産の
印刷(PeopleInfo.query.count())
#のクエリ最初の個人的な問題の
印刷(PeopleInfo.query.first())
#のクエリID図4は、[3ウェイ]で
印刷(PeopleInfo.query.get(4 ))
を印刷(PeopleInfo.query.filter(PeopleInfo.id == 4 )1次回())
プリント(PeopleInfo.query.filter_by(ID = 4 )1次回())
#1 [スタート/含める]のグラム終わるすべての文字の名前のクエリデータを
印刷します(PeopleInfo.query.filter(PeopleInfo.name.endswith(' G ' )。すべての()))
#のクエリを名前ではありませんすべてのデータは、王[2つの方法]に等しい
印刷(PeopleInfo.query.filter(PeopleInfo.name!= ' 王' ).ALL())
#クエリのすべてのデータの名前と電子メールが李に始めている[2つの方法]
印刷(PeopleInfo.query.filter(PeopleInfo.name。 startsWith(' 李'))。フィルター(PeopleInfo.email.startswith(' 李' ))。すべての())
を印刷(PeopleInfo.query.filter(PeopleInfo.name.startswith(' 李')、PeopleInfo.email.startswith (「李」))。すべての())
#のクエリのパスワードは、 `` itheima.com`の最後に123456`またはすべてのデータをemail` `である
から SQLAlchemyのインポートor_
を印刷(PeopleInfo.query.filter(or_(PeopleInfo.password == ' 123456 '、PeopleInfo.email.endswith(' itheima.com ' )))。すべての())
#のクエリID [1、3、5、7、 9]文字リストの
印刷(PeopleInfo.query.filter(PeopleInfo.id.in _([1 ,. 3 ,. 5 ,. 7、9 ]))。すべての())
#のクエリ名が文字データ劉ある
印刷(PeopleInfo.query .filter_by(名前= ' 劉' ).ALL())
#は、すべての文字データを照会し、ソートメールに
#降順
印刷(PeopleInfo.query.order_by(PeopleInfo.email.desc())。すべての())
#昇順
印刷を(PeopleInfo.query.order_by(PeopleInfo.email.asc())。すべての())
#ページ3、クエリデータの2ページ
#ページ=該当なし、最初の数ページ
#PER_PAGE =少数のデータ毎なし
ページ指定= PeopleInfo.query.paginate(= 1ページ、PER_PAGE = 2 )
#最初の数ページを
印刷(paginates.page)
#の ページ数
を印刷(paginates.per_page)
#データの総数
を印刷(paginates.total)
#現在のページのデータ
を印刷(paginates.items)
モデルクラスコード:
フラスコのインポートフラスコ
から flask_sqlalchemy インポートSQLAlchemyの
アプリケーション =フラスコ(__name__ )
#のセットデータベースは、URLに接続し
たapp.config [ ' SQLALCHEMY_DATABASE_URI ' ] = ' ://ルート:[email protected] 3306 /テストMySQLの'
app.configをします[ ' SQLALCHEMY_TRACK_MODIFICATIONS ' ] = 真
#のディスプレイ照会する元のSQL文
のapp.config [ ' SQLALCHEMY_ECHO ' ] = 真の
デシベルを = SQLAlchemyの(APP)
#は、モデルの定義
クラスをBookInfo(db.Model):
#設定テーブル
__tablename__ = ' のBookInfo '
#主キー、自動自己成長の後に
ID = db.Column(db.Integer、PRIMARY_KEY = 真)
名 = db.Column(db.String(20 )、UNIQUE = Trueの場合、NULL可能= False)が
PUB_DATE = db.Column(db.Date、NULL可能= 真)
ReadCount = db.Column(db.Integer、デフォルト= 1 )
commentCount = db.Column(db.Integer、デフォルト= 。1 )
is_delete = db.Column(db.Boolean、デフォルト= False)が
DEF __repr__ (セルフ):
返すself.nameの
クラスをPeopleInfo(db.Model):
__tablename__ = ' peopleinfo '
ID = db.Column(db.Integer、PRIMARY_KEY = 真)
名 = db.Column(db.String(20)、ユニーク= 真)
パスワード = db.Column(デシベル(20).String、NULL可能= False)が
電子メール = db.Column(db.String(50)、NULL可能= TRUE)
#设置外键
book_id = db.Column(db.Integer、db.ForeignKey(' bookinfo.id ' ))
デフ __repr__ (自己):
戻りself.name
場合 __name__ == " __main__" :
app.run(デバッグ =真)