Tôi đang phát triển một ứng dụng với bình và SQL Alchemy. Tôi cần hiển thị các truy vấn được thực hiện để tạo trang cùng với thời gian mỗi truy vấn đã gỡ lỗiFlask SQLAlchemy hiển thị truy vấn để gỡ lỗi
Cách tốt nhất để làm điều đó là gì?
Tôi đang phát triển một ứng dụng với bình và SQL Alchemy. Tôi cần hiển thị các truy vấn được thực hiện để tạo trang cùng với thời gian mỗi truy vấn đã gỡ lỗiFlask SQLAlchemy hiển thị truy vấn để gỡ lỗi
Cách tốt nhất để làm điều đó là gì?
Tôi chưa tự sử dụng nó, nhưng có vẻ như Flask Debug-toolbar có thể trợ giúp việc này.
https://github.com/mgood/flask-debugtoolbar
Đó là một cảng django-debug-thanh công cụ, có thể được sử dụng cho profiling truy vấn. Tài liệu của Flask Debug-toolbar không đề cập đến nó, nhưng có mã cho SQLAlchemyDebugPanel.
Vì vậy, tôi nghĩ rằng nó có thể là giá trị để có một cái nhìn tại dự án, và xem nếu nó làm những gì bạn cần.
Câu trả lời khác chỉ hoạt động với flask_sqlalchemy
, không phải flask
và sqlalchemy
.
Nếu bạn muốn sử dụng bản địa SQLAlchemy
, bạn có thể làm điều này sửa chữa gấp gáp: http://yuji.wordpress.com/2014/01/07/use-native-sqlalchemy-in-flask-debugtoolbar/
from flask.ext.sqlalchemy import _EngineDebuggingSignalEvents
_EngineDebuggingSignalEvents(engine, app.import_name).register()
# use at your own risk! a development environment shouldn't really care though!
Các giải thích/chọn điểm cuối không làm việc mà không cần dây chúng vào dự án của bạn bằng tay, nhưng đồng rất ít nhất trình gỡ lỗi truy vấn của bạn (đếm và sql) hoạt động. Tôi đã cố gắng hiểu loại truy vấn giả kim của tôi đang hình thành, và tôi hiểu rồi.
xin lưu ý rằng điều này vẫn yêu cầu cài đặt phần mở rộng Flask-SQLAlchemy, vì nó sử dụng các phương thức máy chủ từ nó. –
Trả lời muộn nhưng thiết lập "echo = True" trong sqlalchemy create_engine của bạn sẽ ghi lại các truy vấn được thực thi và thời gian.
Nếu bạn đang sử dụng tiện ích Flask và không muốn bận tâm với create_engine, bạn có thể đặt khóa cấu hình SQLALCHEMY_ECHO=True
.
+1: Câu trả lời đơn giản, gọn gàng để xuất chuỗi truy vấn. Cảm ơn. – tatlar
app.config['SQLALCHEMY_ECHO'] = True
Nếu bạn đang sử dụng riêng cấu hình python logging của bạn, bạn có thể muốn chỉ đơn giản set the level of the 'sqlalchemy.engine' logger to 'INFO' in your config.
Có rất nhiều cách để cấu hình logging python của bạn, nhưng đây là một ví dụ using logging.config.dictConfig()
import logging.config
logging.config.dictConfig({
...
'loggers': {
'sqlalchemy.engine': {
'level': 'INFO',
'handlers': ...
}
}
})
Ngoài các câu trả lời bằng Cawb07, mà giải quyết nó cho tôi, hãy chắc chắn bạn có DEBUG_TB_INTERCEPT_REDIRECTS
bộ thành True khi bạn đang truy vấn trước khi chuyển hướng.
Nó hoạt động. Tất cả bạn cần là có sqlalchemy thiết lập với phần mở rộng giả kim thuật sql và thanh công cụ gỡ lỗi sẽ nhặt nó lên. thanks – applechief
Nếu bạn muốn làm điều gì đó khác với các truy vấn, gọi str() trên một đối tượng truy vấn sẽ cung cấp cho bạn một chuỗi đại diện của truy vấn mà bạn có thể làm bất cứ điều gì bạn muốn. Nó có khả năng sẽ không chứa các giá trị được tham số hóa, nhưng bạn sẽ có thể thấy cấu trúc truy vấn. – aezell