2016-12-31 13 views
0

を用いSQLAlchemyのテーブル名反射IフラスコアプリでGET呼び出しでデータベースにテーブル名を抽出するために以下のコードを使用しています:効率的な方法

session = db.session() 
qry = session.query(models.BaseTableModel) 
results = session.execute(qry) 
table_names = [] 
for row in results: 
    for column, value in row.items(): 
     #this seems like a bit of a hack 
     if column == "tables_table_name": 
      table_names.append(value) 
print('{0}: '.format(table_names)) 

データベース内のテーブルを添加してもよいことを考えます/データベース内のテーブルの名前を取得するための効率的で信頼性の高い方法の上にあるコードですか?

+0

2番目のループの代わりに '[table_table_name"] 'を使用しますか? –

+0

一般的に何かを最適化しようとすると、この流れに従うべきです:1.パフォーマンスを測定します。2.パフォーマンスに満足しない場合は、(3)else exitを実行します。 3.最適化を見つけて適用し、(1)に進みます。 (1)と(2)を行わずに(3)を実行するのは悪いです。早すぎる最適化と呼ばれる反パターンで終わる可能性が非常に高いからです。 –

+0

@ YaroslavAdminありがとう、それはコードの数行と、おそらく少しの実行時間を節約します。私は使用されたsqlalchemy方法論が私の目標にとってベストプラクティスであるかどうか疑問に思っていましたか? –

答えて

1

明白な最適化の1つは、第2ループの代わりにrow["tables_table_name"]を使用することです。

BaseTableModelが他のすべてのテーブルの名前を含むテーブルであると仮定すると、このデータを取得するのに最も速いアプローチを使用しているとします。