Używam python codziennie z dużym naciskiem na pracę bazy danych.Python pyodbc kursor vs kursor bazy danych
Korzystanie pyodbc moim standardowym początku jest coś takiego jak
connection_hostname = pyodbc.connect('connection_string')
cursor_hostname = connection_hostname.cursor()
command_hostname = 'select * from everything_forever;'
cursor_hostname.execute('command_hostname')
i jeśli muszę chcą ponownie wykorzystać kursor do innego zapytania zamiast tworzyć nowy kursor, można przechowywać zestaw wyników z pierwszego zapytania jak tak :
results_from_query = cursor_hostname.fetchall()
Następnie przejdź dalej.
To podejście dobrze sprawdziło się do tej pory.
Niedawno zmieniłem pracę, a niektórzy z moich nowych współpracowników, którzy zazwyczaj używają interfejsów graficznych do pracy z DB zaczęli panikować, gdy demonstrowałem powyższą technikę. Tym, co je wyłączyło, było słowo kluczowe kursora. Rozumiem, że kursory są dużym nie-nie z DB, ponieważ wskazują na logikę, która nie jest oparta na teorii mnogości, mają tendencję do popychania hosta na niskie/zerowe poziomy zrównoleglania i operacji typu RBAR, ale nie wierzę w kursor ODBC. m deklaracja powyżej jest taka sama jak kursor, o którym myślimy, kiedy mamy nasze czapki techniczne i administracyjne dla serwera SQL Server.
Czy ktoś może wyjaśnić różnicę między tymi kursorami ODBC a kursorami typu SQL Server (zakładając, że mam rację, że są różne)?
Jeśli jestem niepoprawny, proszę oświecić mnie i powiedzieć, w jaki sposób mogę bardziej efektywnie korzystać z moich baz danych.
Dlaczego nie można po prostu wykonać bezpośrednio z połączenia jak
connection_hostname.execute(command_hostname)
mam ochotę struktur kursorów ODBC, ponieważ są one ma coś wspólnego z pozwalając wielu kursorów przez tego samego połączenia w celu zmniejszenia kosztów połączeń i takie. Odejście od bazy?