Язык программирования Python

       

Выборки из базы данных


Базы данных создаются для удобства хранения и извлечения больших объемов. Следующий нехитрый пример позволяет проверить, правильно ли были введены в таблицу дни недели:

import sqlite as db

c = db.connect(database="tvprogram") cu = c.cursor() cu.execute("SELECT weekday, wdname FROM wd ORDER BY weekday;") for i, n in cu.fetchall(): print i, n

Если все было сделано правильно, получится:

0 Воскресенье 1 Понедельник 2 Вторник 3 Среда 4 Четверг 5 Пятница 6 Суббота 7 Воскресенье

Несложно догадаться, как сделать выборку телепрограммы:

import sqlite as db

c = db.connect(database="tvprogram") cu = c.cursor() cu.execute(""" SELECT tvdate, tvtime1, wd.wdname, tvchannel, prname, prgenre FROM tv, wd WHERE wd.weekday = tvweekday ORDER BY tvdate, tvtime1;""") for rec in cu.fetchall(): dt = rec[0] + rec[1] weekday = rec[2] channel = rec[3] name = rec[4] genre = rec[5] print "%s, %02i.%02i.%04i %s %02i:%02i %s (%s)" % ( weekday, dt.day, dt.month, dt.year, channel, dt.hour, dt.minute, name, genre)

В этом примере в качестве типа для даты и времени используется тип из mx.DateTime. Именно поэтому стало возможным получить год, месяц, день, час и минуту обращением к атрибуту. Кстати, datetime-объект стандартного модуля datetime имеет те же атрибуты. В общем случае для даты и времени может использоваться другой тип, поэтому если получаемые из базы даты будут проходить более глубокую обработку, их следует переводить во внутреннее представление сразу после получения по запросу. Тем самым тип даты из модуля DB-API не будет влиять на другие части программы.



Содержание раздела