2017-05-12 31 views
6

Có lợi ích gì khi đóng con trỏ khi sử dụng số sqlite3 module của Python không? Hay nó chỉ là một tạo phẩm của DB API v2.0 mà chỉ có thể làm điều gì đó hữu ích cho các cơ sở dữ liệu khác?Tại sao phải đóng con trỏ cho Sqlite3 bằng Python

Có ý nghĩa là connection.close() phát hành tài nguyên; tuy nhiên, không rõ ràng những gì cursor.close() thực sự làm, cho dù nó thực sự phát hành một số tài nguyên hoặc không làm gì cả. Tài liệu cho tài liệu không hiển thị:

>>> import sqlite3 
>>> conn = sqlite3.connect(':memory:') 
>>> c = conn.cursor() 
>>> help(c.close) 
Help on built-in function close: 

close(...) 
    Closes the cursor. 

Lưu ý, đây là câu hỏi hoàn toàn khác so với Why do you need to create a cursor when querying a sqlite database?. Tôi biết con trỏ là gì. Câu hỏi đặt ra là về phương thức cursor.close() thực sự làm và liệu có bất kỳ lợi ích nào để gọi nó hay không.

+0

Có thể trùng lặp [Tại sao bạn cần tạo con trỏ khi truy vấn cơ sở dữ liệu sqlite?] (Http://stackoverflow.com/questions/6318126/why-do-you-need-to-create-a-cursor -when-querying-a-sqlite-database) –

+0

@ChristophTerasa Câu hỏi này không phải là về tạo con trỏ. Đó là về những gì * close() * phương pháp trên con trỏ thực sự làm và cho dù có bất kỳ lợi ích để gọi nó. –

+1

Nhận một triệu con trỏ, đóng chúng lại hay không và so sánh việc sử dụng bộ nhớ. –

Trả lời

0

Trong trường hợp SQLite, không có nhiều khác biệt nhưng API cho cơ sở dữ liệu không chỉ dành cho cơ sở dữ liệu nhúng mà còn cho tất cả cơ sở dữ liệu SQL.

Đối với DBMS, con trỏ thường ngụ ý một phiên trong máy khách và đôi khi trên máy chủ. Vì vậy, nếu bạn không sử dụng việc thực hiện tính toán tham chiếu của Python (chẳng hạn như CPython), thì rất nhiều tài nguyên có thể được gắn cho đến khi GC giải phóng chúng.

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