需要
動的なクエリ、テーブル名、フィールドを達成したい、フィールドの値が固定されていません
1 OBJ =テーブル.query.filter_by(フィールド= 値1)1次回()
2
。3 OBJ。フィールド値= 2
db_model名前にまず、ダイナミックアクセス
1 クラスの役割(db.Model):
2 __tablename__ = ' ロール'
3 、ID = db.Column(db.Integer、PRIMARY_KEY = TRUE)
4 名= db.Column(db.String(64 ))
5 電子メール= db.Column (db.String(64 ))
6
7 DEF __repr__ (自己):
8 リターン ' <役割%R> '%self.name
9
10 AA =グローバル()[ " 役割" ]
検証結果:
= aa.query.get OBJ(1 )
印刷(OBJ)
#は、正常な結果を得ることができます
動的なクエリ:
単純なクエリの列名のfilter_by、比較演算子をサポートしていません。
フィルター= { ' 名前':' リサ' }
OBJ = db_model.query.filter_by(**フィルタ)1次回()
検証結果:
印刷(OBJ) #の結果 <役割' リサ' >
完全なコード:
1 #のインポート依存性
2 からフラスコインポートjsonifyフラスコに、
3 から flask_sqlalchemy インポートSQLAlchemyの
4 位のサービスを作成する
。5アプリ=フラスコ(__name__ )
。6
。7つの #1 を設定アプリの特性は
8 #データベース接続設定のURL
。9 App.configファイル[ ' SQLALCHEMY_DATABASE_URI ' ] = 「のMySQL + mysqlconnector://ルート:[email protected]:3306 /テスト」
10
。11 #自動的にリクエストの終了後に変更をコミットされたデータベース毎に設けられる
12は App.configファイルの[ 'SQLALCHEMY_COMMIT_ON_TEARDOWN ' ] = 真
13はあるのapp.config [ ' SQLALCHEMY_TRACK_MODIFICATIONSは' ] = 真
14の
15 #は、元のSQL文が照会を表示
16のapp.config [ ' SQLALCHEMY_ECHOは' ] = 偽
。17
18である #のレスポンスが中国のJSON、表示します
。19のapp.configの[を' JSON_AS_ASCII ' ] = 偽
20は、
21である #SQLAlchemyの標的生成
22れる DB = SQLAlchemyの(APP)
23は、
24 #ロールのロールクラスマッピングテーブル本体によってPythonで、モデルの作成
25 クラスの役割(db.Model):
26である __tablename__ = ' ロール'
27 ID = db.Column(db.Integer、PRIMARY_KEY = TRUE)
28 名= db.Column( db.String(64 ))
29 メールに= db.Column(db.String(64 ))
30
31である DEF __repr__ (自己):
32 リターン ' <R&LTロール%> '%self.name
33は
34である #モデル名取得
35 db_modelをグローバル=()[ " 役割" ]
36 プリント(db_model)
37
38である #の検証
39 OBJ db_model.query.get =(1。 )
40 #動的クエリ照会filter_by使用して
41である {フィルター= ' 名前':' リサ' }
42で OBJ = db_model.query.filter_by(** フィルタ)1次回()
43は、 プリント(OBJ)
ドキュメントを参照します:
フラスコSQLAlchemyのfilter_byダイナミックフィルタと
彼らは、問題が何であるかを最終的に検索するクリア記事から(それはダイナミックアクセスモデル名です)
https://segmentfault.com/q/1010000011702302
参照モデル名を取得する方法: