2012-04-27 40 views
18

Cách tốt nhất để tạo truy vấn cố ý trống trong SQLAlchemy là gì?SQLAlchemy: tạo truy vấn cố ý trống?

Ví dụ: tôi có một vài chức năng tạo truy vấn (ví dụ: thêm WHERE mệnh đề) và tại một số điểm tôi biết kết quả sẽ trống.

Cách tốt nhất để tạo truy vấn không trả về bất kỳ hàng nào? Một cái gì đó giống như của Django QuerySet.none().

+0

Lý do bạn muốn thay thế truy vấn không trả hàng bằng truy vấn giả mạo là gì? Bạn vẫn cần kiểu trả về (một đối tượng được ánh xạ hay như vậy) để được bảo tồn? – van

+1

Hai lý do: đầu tiên sẽ là hiệu suất (và tránh cảnh báo được phát hành khi kiểm tra tư cách thành viên đối với danh sách trống (ví dụ: 'foo.in _ ([])')) và thứ hai sẽ dễ đọc (ví dụ: ' nếu user.has_no_permissions(): return empty() ') –

+0

Tại sao bạn không chỉ trả về một' list/tuple' trống trong câu hỏi thứ hai trong bình luận đầu tiên của tôi]? – van

Trả lời

20

Nếu bạn cần loại trả lại thích hợp, chỉ cần trả lại session.query(MyObject).filter(sqlalchemy.sql.false()). Khi được đánh giá, điều này sẽ vẫn nhấn DB, nhưng nó sẽ được nhanh chóng.

Các vấn đề liên quan