2016-11-17 5 views
0

現在、私はこの出力を持っている:django connection.queries出力の時間スケールを拡張する方法は?

from django.db import connection 
print connection.queries 

出力: [{ '時間': [{ '時間': '0.000'、...

私はのようになり、出力したかったです: '0.000000'、...

可能ですか?はいの場合はどうですか?なぜそうでないのであれば? ほとんどのSQLクエリは0.000時間のフレームで実行されます。基本的には、この機能を実装して、settings.pyでDEBUG Trueを設定して必要な変更を加えたときに、ログ内の小さな時間部分のSQL実行時間を確認できるようにしたいと考えています。

+3

クエリに「0.0001秒」または「0.00001秒」秒がかかると、何千ものクエリがない限り、ページの読み込み時間に大きな違いはありません。何千ものクエリがある場合は、「0.0001」か「0.00001」秒かどうかを気にするよりも、減らすことに集中してください。 – Alasdair

+0

私は何千ものクエリを持っています。私はできる限りのところで最適化したかったのです。ありがとう。 –

+2

プロダクションデータベースのレイテンシは、ローカル開発マシンのレイテンシよりもはるかに大きくなる可能性があります。特に、ウェブサイトを拡大してデータベースを別のマシンに配置する必要がある場合は、レイテンシが1ms増加しても、10,000クエリで完了するまでにさらに10秒かかることになります。その時点で、クエリを最適化するためのすべての労力は無駄です。クエリの数を減らす必要があります。 – knbk

答えて

4

これは、django.db.backends.utilsにあるCursorDebugWrapperクラスで満たされています。これは、クエリ時間が短縮される場所でもあります。

'time': "%.3f" % duration, 

あなたはより多くの数字をしたい場合は、あなた自身のCursorDebugWrapperを作成し、それが開始されますBaseDatabaseWrapperをモンキーパッチしたり、独自のデータベースのバックエンドを作成する必要があります。

def make_debug_cursor(self, cursor): 
    """ 
    Creates a cursor that logs all queries in self.queries_log. 
    """ 
    return utils.CursorDebugWrapper(cursor, self) 
関連する問題