クラス名による動的モデル名および動的なクエリフラスコSQLAlchemyのダイナミックfilter_byとフィルタのpython文字列のインスタンスを取得しますflask_sqlalchemy

需要

動的なクエリ、テーブル名、フィールドを達成したい、フィールドの値が固定されていません

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ダイナミックフィルタと

 

彼らは、問題が何であるかを最終的に検索するクリア記事から(それはダイナミックアクセスモデル名です)

モデルの動的結合フラスコSQLAlchemyの

https://segmentfault.com/q/1010000011702302

 

参照モデル名を取得する方法:

クラス名によって得られた例のPython文字列

おすすめ

転載: www.cnblogs.com/kaerxifa/p/11427852.html