Я использую python с RDBMS '(MySQL и PostgreSQL), и я заметил, что я действительно не понимаю, как использовать курсор.
Обычно один сценарий подключается к БД через клиентский DB-API (например, psycopg2 или MySQLdb):
connection = psycopg2.connect(host='otherhost', etc)
А затем создается курсор:
cursor = connection.cursor()
И тогда можно выдавать запросы и команды:
cursor.execute("SELECT * FROM etc")
Интересно, где же результат запроса? это на сервере? или немного на моем клиенте и немного на моем сервере? И затем, если нам нужно получить доступ к некоторым результатам, мы получаем их:
rows = cursor.fetchone()
или
rows = cursor.fetchmany()
Теперь допустим, я не извлекаю все строки и решаю выполнить другой запрос, что будет с предыдущими результатами? Это их накладные расходы.
Кроме того, я должен создать курсор для каждой формы команды и постоянно каким-либо образом повторно использовать его для тех же команд; У меня в голове psycopg2 может как-то оптимизировать команды, которые выполняются много раз, но с разными значениями, как и стоит ли это?
Thx