2014-06-15 2 views
2

이 질문이 이미 제기되었지만 정확히 무엇을 찾고 있었는지에 대해 사과드립니다.sqlalchemy 쿼리 기간 로깅

sqlalchemy에서 syslog로 쿼리 기간을 기록하는 가장 좋은 방법을 찾고 있습니다.

나는 이것을 읽었습니다 : http://docs.sqlalchemy.org/en/rel_0_9/core/engines.html#configuring-logging 그리고 나는 sqlalchemy 신호에 대해 읽었지만, 나는 그들이하려고하는 것에 적합하다고 확신하지 못합니다. echo와 echo_pool 플래그는 stdout에 그냥 로그하는 것 같습니다. 그들이 제공하는 것보다 더 많은 정보를 원합니다. 내 완벽한 세계에서 각 쿼리에 대해 쿼리 문자열, 쿼리 기간 및 심지어 파이썬 스택 추적을 얻을 수있었습니다.

몇 가지 다른 방법으로 sqlalchemy를 사용합니다. 우리는 ORM을 사용하고 쿼리 작성기를 사용하며 실행하기 위해 전달 된 텍스트 쿼리도 사용합니다. 어떤 방법으로 sqlalchemy를 사용하든 관계없이 함수를 전달할 신호가 있으면 완벽 할 것입니다.

코드에서 실제적으로 전선을 통해 쿼리를 전송하는 위치를 찾고 있었고 누군가 거기에 대한 통찰력이 있다면 그 점도 좋습니다.

더 생각해 보면, 고통이라면 그럴만 한 가치가 없을 수도 있지만, 누군가가 그 날을 구할 수있는 훅을 알고 있다면 나는 물어볼 것이라고 생각했습니다. 기록을 위해 Flask-Sqlalchemy 확장을 사용하여 Flask를 사용하고 있습니다.

여기에 불분명 한 점이 있으면 알려주십시오.

감사합니다.

답변

3

Flask-SQLAlchemy는 이미 디버그 모드에있을 때 (또는 옵션이 별도로 설정된 경우) 각 쿼리에 대한 정보를 기록합니다. 너는 get_debug_queries()으로 그걸 얻을 수있다.

Flask-DebugToolbar을 사용하는 경우 각 요청에 대해이 데이터를 탐색 할 수 있도록 오버레이가 제공됩니다.

이 정보를 기록하려면이 정보를 기록 할 때마다 요청을 트리거하는 기능을 추가하십시오.

@app.after_request 
def record_queries(response): 
    for info in get_debug_queries(): 
     # write to syslog here 

    return response 
+0

가! 고마워. 고마워. 나는 내일 그것을 시험 할 것이다. – Hoopes