Utilização eficiente do MySQLDB SSCursor para grandes conjuntos de resultados
Ao lidar com vastos conjuntos de resultados envolvendo centenas de milhares ou mais linhas, o gerenciamento de memória eficiente torna-se crucial. Como tal, o MySQLDB SScursor (Streaming Select Cursor) surge como uma ferramenta adequada para minimizar o consumo de memória.
Distinção entre Fetchall() com Cursor Base vs. Ao contrário da crença popular, executar fetchall() em um SScursor consome mais memória do que em um cursor base. Isso ocorre porque um SScursor busca resultados incrementalmente do servidor em partes, enquanto fetchall() baixa todo o conjunto de resultados na memória. Portanto, usar fetchall() torna-se contra-intuitivo para cenários com restrição de memória.
Iterando resultados com SSCursor
Para transmitir com eficiência os resultados de um SScursor linha por linha com base em linhas, empregue o seguinte método:
import MySQLdb.cursors conexão=MySQLdb.connect( host="ohost",usuário="ousuário", passwd="thepassword",db="thedb", cursorclass = MySQLdb.cursors.SSCursor) cursor = conexão.cursor () cursor.execute(consulta) para linha no cursor: print(row)
import MySQLdb.cursors
connection=MySQLdb.connect(
host="thehost",user="theuser",
passwd="thepassword",db="thedb",
cursorclass = MySQLdb.cursors.SSCursor)
cursor=connection.cursor()
cursor.execute(query)
for row in cursor:
print(row)
Otimizações adicionais
Limite o tamanho do conjunto de resultados especificando cláusulas WHERE ou usando LIMIT.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3