Потоки на Python

На удивление, на такую простую вещь как создание потоков, потратил пару часов, из-за обилия в интернетиках примеров с ошибками в коде. Потому привожу рабочий пример:

Результат работы скрипта:

Отправка сообщения на email по smtp, в utf8 с телом в html

Python и ошибка InternalError(-1, ‘Unread result found.’, None))

Сия ошибка возникает когда одно и тоже соединение используется в «вложенных» запросах.  Хотя курсоры разные. Т.е. внутри проходу по циклу cursor.fetchone(), выполняется еще один запрос с этим же идентификатором соединения, но с другим курсором.

Решение: курсор создаем с «буфером»: cursor = sbss.cursor(dictionary=True,buffered=True)

Например:

Python и аргументы командной строки

В питоне есть два способа получения аргументов запуска скрипта из командной строки:

  1. Использовать модуль argparse. Попробовал. Не понравилось, потому что — это еще одна дополнительная зависимость в скрипте, что мне сильно не нравится, когда шапка простого скрипта забита десятком строк import с модуля которых нет в «базе», что нервирует когда запускаешь первый раз скрипт на системе с «голым» питоном. Для желающих, вот например хорошая статья
  2. Использовать стандартный модуль sys. Менее «навороченный», но и хотяб документацию не нужно «переваривать» с пол часа. И так всё понятно и стандартно.

Итак, пример скрипта:

Выборка из базы на python с именованными ячейками.

На php я привык, что результат запроса от базы данных, всегда приходит в именованном массиве. На python  это по не понятной причине по умолчанию не так. Вот как выглядит код для получения именованного массива на python:

1 … 11 12 13 14