Spec-Zone .ru
спецификации, руководства, описания, API

21.6.4.4. Запросы Данных Используя Соединитель/Python

Следующие шоу в качестве примера, как запросить данные, используя курсор, создали использование соединения cursor() метод. Возвращенные данные форматируются и печатаются на консоли.

Задача состоит в том, чтобы выбрать всех сотрудников, нанятых в 1999 году, и напечатать их имена и, арендные даты к консоли.

import datetimeimport mysql.connectorcnx = mysql.connector.connect(user='scott', database='employees')cursor = cnx.cursor()query = ("SELECT first_name, last_name, hire_date FROM employees "         "WHERE hire_date BETWEEN %s AND %s")hire_start = datetime.date(1999, 1, 1)hire_end = datetime.date(1999, 12, 31)cursor.execute(query, (hire_start, hire_end))for (first_name, last_name, hire_date) in cursor:  print("{}, {} was hired on {:%d %b %Y}".format(    last_name, first_name, hire_date))cursor.close()cnx.close()

Мы сначала открываем соединение с сервером MySQL и храним объект соединения в переменной cnx. Мы тогда создаем новый курсор, по умолчанию объект MySQLCursor, используя соединение cursor() метод.

В предыдущем примере мы храним SELECT оператор в переменной query. Отметьте, что мы используем закрывший кавычки %s- маркеры, где даты должны были быть. Соединитель/Python преобразовывает hire_start и hire_end от типов Python до типа данных, что MySQL понимает и добавляет необходимые кавычки. В этом случае это заменяет первое %s с '1999-01-01', и второе с '1999-12-31'.

Мы тогда выполняем работу, сохраненную в query переменная используя execute() метод. Данные, используемые, чтобы заменить %s- маркеры в запросе передается как кортеж: (hire_start, hire_end).

После выполнения запроса сервер MySQL готов отправить данные. Набор результатов мог быть нулевыми строками, одной строкой, или 100 миллионами строк. В зависимости от ожидаемого объема можно использовать различные методы, чтобы обработать этот набор результатов. В этом примере мы используем cursor возразите как iterator. Первый столбец в строке сохранен в переменной first_name, второе в last_name, и третье в hire_date.

Мы печатаем результат, форматируя вывод, используя встроенный Python format() функция. Отметьте это hire_date был преобразован автоматически Соединителем/Python к Python datetime.date объект. Это означает, что мы можем легко отформатировать дату в более удобочитаемой форме.

Вывод должен быть чем-то вроде этого:

..Wilharm, LiMin was hired on 16 Dec 1999Wielonsky, Lalit was hired on 16 Dec 1999Kamble, Dannz was hired on 18 Dec 1999DuBourdieux, Zhongwei was hired on 19 Dec 1999Fujisawa, Rosita was hired on 20 Dec 1999..