ОРТ|Новости|Новости|9.15 10.02.2003 9.15|ОРТ|"НЕЖНЫЙ ЯД"|Сериал|10.15 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

ОРТ|Новости|Новости|9.15 10.02.2003 9.15|ОРТ|"НЕЖНЫЙ ЯД"|Сериал|10.15

Поиск

c.commit()

c.close()

 

Стоит напомнить,что встроенная функция enumerate() создает список пар номер-значение,например:

 

>>> print [i for i in enumerate(['a', 'b', 'c'])] [(0, 'a'), (1, 'b'), (2, 'c')]

 

 

Из приведенного примера ясно,что метод executemany() объекта-курсора использует второй параметр-последовательность-для массового ввода данных с помощьюSQL-инструкции INSERT.

 

Предположим,что телепрограмма задана в файлеtv.csvв форматеCSV (он уже обсуждался):

 

10.02.2003 9.00|ОРТ|Новости|Новости|9.15 10.02.2003 9.15|ОРТ|"НЕЖНЫЙ ЯД"|Сериал|10.15

 

10.02.2003 10.15|ОРТ|"Маски-шоу"|Юмористическая программа|10.45 10.02.2003 10.45|ОРТ|"Человек и закон"||11.30 10.02.2003 11.30|ОРТ|"НОВЫЕ ПРИКЛЮЧЕНИЯ СИНДБАДА"|Сериал|12.00

 

Следующая программа разбираетCSV-файл и записывает данные в таблицу tv:

 

import calendar, csv

 

 

import sqlite as db

## Только для

 

from sqlite.main import Time, Date

 

db.Date, db.Time = Date, Time

## sqlite

 

 

c = db.connect(database="tvprogram") cu = c.cursor()

 

input_file = open("tv.csv", "rb") rdr = csv.DictReader(input_file,

fieldnames=['begt', 'channel', 'prname', 'prgenre',

'endt'])

for rec in rdr:

bd, bt = rec['begt'].split()

 

bdd, bdm, bdy = map(int, bd.split('.')) bth, btm = map(int, bt.split('.'))

eth, etm = map(int, rec['endt'].split('.')) rec['wd'] = calendar.weekday(bdy, bdm, bdd)


 


rec['begd'] = db.Date(bdy, bdm, bdd) rec['begt'] = db.Time(bth, btm, 0) rec['endt'] = db.Time(eth, etm, 0)

 

cu.execute("""INSERT INTO tv

 

(tvdate, tvweekday, tvchannel, tvtime1, tvtime2, prname,

 

prgenre)

VALUES (

 

%(begd)s, %(wd)s, %(channel)s, %(begt)s, %(endt)s, %(prname)s, %(prgenre)s);""", rec)

 

input_file.close() c.commit()

 

 

Большая часть преобразований связана с получением дат и времен(приходится разбивать строки на части в соответствии с форматом даты и времени).День недели получен с помощью функции из модуля calendar.

 

Примечание:

 

Из-за небольшой ошибки в пакете sqlite конструкторы Date,Time и т.д.не попадают из модуля sqlite.main при импорте из sqlite,поэтому пришлось добавить две строки,специфичные для sqlite,в универсальный"модуль"с именем db.

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 51; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.01 с.)