Tôi nhầm lẫn về lý do tại sao python cần đối tượng con trỏ. Tôi biết jdbc và có kết nối cơ sở dữ liệu khá trực quan nhưng trong python tôi đang bối rối với đối tượng con trỏ. Ngoài ra tôi nghi ngờ về sự khác nhau giữa hàm cursor.close() và connection.close() trong điều khoản phát hành tài nguyên là gì.Sự khác biệt giữa đối tượng con trỏ và đối tượng kết nối
Trả lời
Mô hình con trỏ không dành riêng cho Python nhưng là cấu trúc dữ liệu thường xuyên trong databases themselves.
Tùy thuộc vào triển khai cơ bản, có thể tạo ra một số con trỏ chia sẻ cùng một kết nối với cơ sở dữ liệu. Đóng con trỏ nên các tài nguyên miễn phí liên quan đến truy vấn, bao gồm mọi kết quả không bao giờ được lấy từ DB (hoặc được tìm nạp nhưng không được sử dụng) nhưng sẽ không loại bỏ kết nối với cơ sở dữ liệu để bạn có thể có được một con trỏ mới trên cùng một cơ sở dữ liệu mà không cần xác thực lại.
Đối tượng kết nối là kết nối của bạn với cơ sở dữ liệu, đóng lại khi bạn hoàn tất việc nói chuyện với cơ sở dữ liệu cùng nhau. Đối tượng con trỏ là một trình lặp trên một tập kết quả từ một truy vấn. Đóng các kết nối đó khi bạn đã hoàn tất bộ kết quả đó.
tôi nghi ngờ rằng nó là một trình lặp bởi vì có một lệnh như là thực thi (sql_string) thực hiện một chuỗi sql. Nó không có ý nghĩa đối với bất kỳ trình lặp nào cho tập kết quả có chức năng như vậy –
Bạn nói đúng, nhưng con trỏ không chỉ là cấu trúc trên máy khách mà còn trên máy chủ. Nó giúp sử dụng các câu lệnh SQL đã chuẩn bị, thực hiện chúng và sau khi chúng được thực thi, lặp lại kết quả của nó. – Toote
Như những người khác đề cập, một Connection()
là kết nối mạng với cơ sở dữ liệu và chỉ sử dụng thực sự là trả lại con trỏ. PEP-249, trong đó DBApi 2.0 được chỉ định, không xác định chính xác kết nối hoặc con trỏ chính xác, cũng không phải phương thức close()
trên mỗi phải làm; duy nhất mà <module>.connect()
phải trở về một thể hiện của <module>.Connection
, mà <module>.Connection.cursor()
phải trở về một thể hiện của <module>.Cursor
, và <module>.Cursor.execute()
nên gọi tuyên bố cung cấp và trả lại hàng kết quả. Cụ thể, nó không xác định <module>.Connection.execute()
, mặc dù triển khai cụ thể là miễn phí để triển khai chúng dưới dạng tiện ích mở rộng.
Tùy thuộc vào các tiện ích mở rộng đó có lẽ là không khôn ngoan, vì điều đó có nghĩa là bạn sẽ không có mã di động. DBApi làm cho yêu cầu hai cấp này vì việc thực hiện kết nối mà không có đối tượng trung gian có thể gặp khó khăn trên một số cơ sở dữ liệu.
- 1. Sự khác biệt giữa đối tượng và *?
- 2. Sự khác biệt giữa "var" và "đối tượng" trong C#
- 3. Sự khác biệt giữa một đối tượng và một băm?
- 4. Sự khác biệt giữa đối tượng và NSObject
- 5. Sự khác biệt giữa đối tượng và từ điển?
- 6. Sự khác biệt giữa mảng và đối tượng trong js?
- 7. Sự khác biệt giữa đối tượng Nút và đối tượng Phần tử?
- 8. Sự khác biệt giữa đối tượng Javascript và đối tượng JSON
- 9. Sự khác biệt giữa đối tượng hàm và đối tượng có thể gọi là gì?
- 10. Sự khác biệt giữa đối tượng khẳng định là gì = null và Assert.assertNotNull (đối tượng)?
- 11. Sự khác biệt giữa con trỏ và biến con trỏ là gì?
- 12. Sự khác biệt giữa Điểm kết nối NTFS và Liên kết tượng trưng là gì?
- 13. khác biệt jvisualvm giữa các đối tượng trực tiếp và đối tượng được phân bổ
- 14. Sự khác nhau giữa các ký hiệu Mảng đa chiều (đối tượng [] [] và đối tượng [,])
- 15. Sự khác nhau giữa đối tượng và lớp trong PHP?
- 16. Sự khác nhau giữa mảng và đối tượng là gì?
- 17. Sự khác nhau giữa đối tượng Mô hình MVC, đối tượng tên miền và DTO
- 18. Biến Javascript làm đối tượng con trỏ
- 19. thay đổi 'này' con trỏ của một đối tượng để chỉ đối tượng khác nhau
- 20. Sự khác biệt giữa đối tượng bộ đệm khung và đối tượng bộ đệm pixel trong OpenGL là gì?
- 21. Sự khác biệt giữa const. con trỏ và tham chiếu?
- 22. Sự khác biệt giữa mảng ký tự và con trỏ
- 23. Sự khác biệt giữa đối tượng sự kiện và biến điều kiện
- 24. C++ vectơ của các đối tượng và vectơ của con trỏ đến các đối tượng
- 25. Đối tượng theo con trỏ chuột
- 26. con trỏ - trùng lặp đối tượng dụ
- 27. DDD: Các đối tượng kết nối là đối tượng thực thể hoặc đối tượng giá trị?
- 28. Sự khác biệt giữa `đối tượng mới()` và `mới {}` trong C# là gì?
- 29. Con trỏ 'này' có khác với con trỏ của đối tượng không?
- 30. Sự khác biệt giữa * (Con trỏ + Chỉ mục) và Con trỏ []
chúng ta có thể có hai con trỏ cùng một lúc. Nếu có, hãy đề cập đến các vấn đề tương tranh –
tất cả các chi tiết đó đều bị ẩn trong "tùy thuộc vào việc triển khai cơ bản". Bạn sẽ phải đọc tài liệu về trình điều khiển DB tương ứng – Toote
Theo wikipedia: "Trong khoa học máy tính, con trỏ cơ sở dữ liệu là cấu trúc điều khiển cho phép truyền tải qua các bản ghi trong cơ sở dữ liệu. chẳng hạn như truy xuất, thêm và loại bỏ các bản ghi cơ sở dữ liệu. ". Cách Python thực hiện các con trỏ không phù hợp tốt với mô tả đó - nếu chúng chỉ là các trình vòng lặp, chúng sẽ không chịu trách nhiệm thực hiện các câu lệnh SQL. Không phải là một cái gì đó python cụ thể? Và cái gì đó xứng đáng là một lời giải thích? – skyking