разница между курсором и объектами соединения

StackOverflow https://stackoverflow.com//questions/10660411

  •  11-12-2019
  •  | 
  •  

Вопрос

Я не понимаю, почему Python нужен объект курсора.Я знаю jdbc, и там подключение к базе данных довольно интуитивно понятно, но в Python меня путает объект курсора.Также я сомневаюсь в том, в чем разница между функциями курсора.закрытие() и соединение.закрытие() с точки зрения освобождения ресурсов.

Это было полезно?

Решение

Парадигма курсора не специфична для Python, но представляет собой частую структуру данных в сами базы данных ./ P >.

В зависимости от основной реализации может быть возможно создать несколько курсоров, совместно использующих то же соединение с базой данных.Закрытие курсора, должны свободные ресурсы, связанные с запросом, включая любые результаты, которые никогда не выделяются из БД (или не использовали, но не используют), но не устранят подключение к самой базе данных, поэтому вы сможете получить новый курсор в той же базе данныхБез необходимости снова аутентифицироваться.

Другие советы

Как отмечают другие, Connection() — это сетевое соединение с базой данных, и единственное его реальное применение — это возврат курсоров. ПЭП-249, где указан DBApi 2.0, четко не определяет, что такое соединение или курсор, а также что такое close() метод для каждого должен сделать;только это<модуль>.connect() должен вернуть экземпляр<модуль>.Connection, что<модуль>.Connection.cursor()должен вернуть экземпляр<модуль>.Cursor, и<модуль>.Cursor.execute()должен вызвать предоставленный оператор и вернуть результирующие строки.В частности, он не определяет<модуль>.Connection.execute(), хотя в конкретных реализациях они могут быть реализованы как расширения.

Однако полагаться на эти расширения, вероятно, неразумно, поскольку это означает, что у вас не будет переносимого кода.DBApi предъявляет это двухуровневое требование, поскольку выполнение соединения без промежуточного объекта может быть затруднено в некоторых базах данных.

Connection Object - это ваше соединение с базой данных, закрыть, что когда вы закончите разговор с базой данных все вместе.Объект курсора - это итератор через результат, установленный из запроса.Закрыть те, когда вы закончите с этим набором результатов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top