Tôi có một lớp Item
có id
là khóa chính và được tạo tự động hay không. Bây giờ tôi đọc dữ liệu từ một số nguồn bên ngoài khác, tạo đối tượng Item
và cần kiểm tra xem đối tượng này đã có trong bảng items
của tôi hay chưa. Tôi phải làm nó như thế nào?SQLAlchemy: Kiểm tra xem đối tượng đã có trong bảng
Trả lời
Bạn có thể truy vấn các mục có cùng thuộc tính và kiểm tra xem số có lớn hơn 0 hay không.
if session.query(Item.id).filter(Item.email==newItem.email,
Item.type==newItem.type).count() > 0:
// item exists
'> 0' là thừa vì count() trả về 0 nếu không tìm thấy kết quả phù hợp và một số nguyên dương khác. – kalu
@kalu: "Rõ ràng là tốt hơn là ngầm." - Zen của Python –
Sử dụng tính năng làm cho cơ sở dữ liệu làm việc nhiều hơn sau đó nó cần. Xem câu trả lời của tôi dưới đây cho một phương pháp hiệu quả. – Salami
Bạn có thể thử một cái gì đó tương tự như sau:
from sqlalchemy import exc
try:
session.add(item)
session.commit()
except exc.IntegrityError:
session.rollback()
print 'This item fails one of the unique/foreign key checks!'
except:
print 'There was another error'
raise
else:
print 'Everything is OK'
này có vấn đề mà nó hoạt động theo cam kết, và sau đó cuộn lại ...
Một lựa chọn khác, nếu bạn có thể kiểm tra các thuộc tính riêng lẻ, sau đó điều này có thể hoạt động:
session.query(Item).filter_by(x=item.x, y=item.y).count() == 0
Cách hiệu quả nhất là sử dụng exists()
q = session.query(Item.id).filter(Item.email==email)
session.query(q.exists()).scalar() # returns True or False
- 1. Cách kiểm tra xem đối tượng đã cho là đối tượng hoặc Mảng trong chuỗi JSON
- 2. Kiểm tra xem bảng có tồn tại
- 3. Kiểm tra xem đối tượng có thực hiện giao diện
- 4. Kiểm tra xem danh sách đỉnh có chứa đối tượng
- 5. Java: Cách kiểm tra xem đối tượng có rỗng không?
- 6. Kiểm tra xem đối tượng Ruby có phải là Boolean
- 7. Kiểm tra xem có phải là một đối tượng
- 8. jQuery: Kiểm tra xem đối tượng có lớp
- 9. Kiểm tra xem một đối tượng có tồn tại
- 10. jQuery; Kiểm tra xem đối tượng có con $ (điều này)
- 11. Kiểm tra xem thành viên đối tượng có tồn tại trong đối tượng lồng nhau
- 12. làm thế nào để kiểm tra xem đối tượng đã tồn tại trong một danh sách
- 13. Kiểm tra xem một đối tượng tồn tại trong VBScript
- 14. Mongoose: kiểm tra xem đối tượng có phải là đối tượng mongoose
- 15. Django cách kiểm tra xem đối tượng có thuộc tính trong chế độ xem
- 16. Kiểm tra nếu đối tượng IndexedDBStore đã chứa khóa
- 17. Kiểm tra xem bảng có tồn tại trong C#
- 18. Django: kiểm tra xem một đối tượng đã tồn tại chưa trước khi thêm
- 19. Làm cách nào để kiểm tra xem một đối số đã cho có phải là đối tượng datetime.date không?
- 20. Kiểm tra xem đó là đối tượng cửa sổ
- 21. Làm thế nào để kiểm tra xem đối tượng "isEmpty()" nếu Object.prototype đã được sửa đổi?
- 22. Làm thế nào để kiểm tra xem một đối tượng đã được sửa đổi
- 23. Kiểm tra xem đối tượng là một số hoặc boolean
- 24. Kiểm tra xem một đối tượng là một Enum
- 25. Kiểm tra xem đối số đã qua có phải là tệp hoặc thư mục trong BASH
- 26. Cách kiểm tra xem đối tượng JSON có rỗng trong Java không?
- 27. Casperjs kiểm tra đối tượng javascript
- 28. Kiểm tra xem bảng truy cập có tồn tại không
- 29. Kiểm tra xem Danh sách đối tượng có chứa đối tượng có giá trị thuộc tính nhất định không
- 30. Tôi có nên kiểm tra xem một đối tượng có rỗng hay không?
Đây có phải là kịch bản '' get_or_create'' không? Nếu vậy: http://stackoverflow.com/questions/2546207/does-sqlalchemy-have-an-equivalent-of-djangos-get-or-create –
@DemianBrecht, cảm ơn phản hồi, nhưng không, nó không phải là . – missingfaktor
@missingfaktor làm thế nào để bạn biết nếu nó đã tồn tại? Dựa trên khóa chính? Hoặc một số khóa duy nhất khác? – jadkik94