Кодирование Katas для осуществления рефакторинга унаследованного кода

Вы пробовали эту версию fetchone? Или что-то другое?

row = cursor.fetchone() 
while row is not None:
    # process
    row = cursor.fetchone()

кроме того, Вы пробовали это?

 row = cursor.fetchmany(size=1)
 while row is not None:
     # process
     row = cursor.fetchmany( size=1 )

Не все драйверы поддерживают их, таким образом, Вы, возможно, получили ошибки или нашли их, также замедляются.

<час>

Редактирование.

, Когда это держится, выполняются, Вы ожидаете базы данных. Это не строка строкой вещь Python; это - вещь MySQL.

MySQL предпочитает выбирать все строки как часть управление кэшем само по себе. Это выключено путем обеспечения fetch_size Целого числа. MIN_VALUE (-2147483648L).

вопрос, какая часть DBAPI Python становится эквивалентом JDBC fetch_size?

я думаю, что это мог бы быть arraysize атрибут курсора. Попробуйте

cursor.arraysize=-2**31

И посмотрите, вынуждает ли это MySQL передать набор результатов потоком вместо того, чтобы кэшировать его.

119
задан Dineshkumar 16 May 2015 в 08:06
поделиться

1 ответ

Я не знаю сайта, который каталогизирует их напрямую, но одна стратегия, которую я иногда использовал, заключается в следующем:

  1. Найдите старый, небольшой, неподдерживаемый проект с открытым исходным кодом на sourceforge
  2. Загрузите его, скомпилируйте / соберите / запустите
  3. Прочтите документацию, почувствуйте код
  4. Воспользуйтесь методами из Эффективная работа с устаревшим кодом , чтобы получить фрагмент тестируемой части
  5. Рефакторинг этой части, возможно, исправляя ошибки и добавляя функции по ходу
  6. Повторите шаги с 4 по 6

Когда вы найдете часть, которая была особенно сложной, выбросьте свою работу и повторите ее пару раз раз, чтобы укрепить свои навыки.

Это не просто практика рефакторинга, но и другие навыки, такие как чтение кода, тестирование и работа с процессами сборки.

Самая сложная проблема - найти проект, который вам нужен.Я достаточно заинтересован, чтобы продолжать работать. Последней, над которой я работал, была библиотека Python для генетического программирования, а текущая, над которой я работаю, - это библиотека IRC для Java.

88
ответ дан 24 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: