Я использую python с RDBMS (MySQL и PostgreSQL), и я заметил, что я действительно не понимаю, как использовать курсор.
Обычно, его script подключается к БД через клиентский 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 может каким-то образом оптимизировать команды, которые выполняются много раз, но с разными значениями, как и стоит ли это?
спасибо