Простой Python. Современный стиль программирования (Любанович) - страница 282

>>>> curs = db.cursor()

>>>> curs.execute('''create table book (title text, author text, year int)''')

>

>>>> db.commit()

7. Считайте данные из файла books.csv и добавьте их в таблицу book:

>>>> import csv

>>>> import sqlite3

>>>> ins_str = 'insert into book values(???)'

>>>> with open('books.csv', 'rt') as infile:

>…·····books = csv.DictReader(infile)

>…·····for book in books:

>…·········curs.execute(ins_str, (book['title'], book['author'], book['year']))

>…

>

>

>

>

>

>>>> db.commit()

8. Считайте и выведите на экран графу title таблицы book в алфавитном порядке:

>>>> sql = 'select title from book order by title asc'

>>>> for row in db.execute(sql):

>…·····print(row)

>…

>('Perdido Street Station',)

>('Small Gods',)

>('The Spellman Files',)

>('The Weirdstone of Brisingamen',)

>('Thud!',)

Если вы хотите вывести на экран значение title, не пользуясь конструкциями для работы с кортежем (круглыми скобками и запятой), попробуйте следующее:

>>>> for row in db.execute(sql):

>…·····print(row[0])

>…

>Perdido Street Station

>Small Gods

>The Spellman Files

>The Weirdstone of Brisingamen

>Thud!

Если хотите проигнорировать начальное слово 'The' в заголовках, вам нужно написать еще одну строку SQL:

>>>> sql = '''select title from book order by

>… case when (title like "The %") then substr(title, 5) else title end'''

>>>> for row in db.execute(sql):

>…·····print(row[0])

>…

>Perdido Street Station

>Small Gods

>The Spellman Files

>Thud!

>The Weirdstone of Brisingamen

9. Считайте и выведите на экран все графы таблицы book в порядке публикации:

>>>> for row in db.execute('select * from book order by year'):

>…·····print(row)

>…

>('The Weirdstone of Brisingamen', 'Alan Garner', 1960)

>('Small Gods', 'Terry Pratchett', 1992)

>('Perdido Street Station', 'China Miéville', 2000)

>('Thud!', 'Terry Pratchett', 2005)

>('The Spellman Files', 'Lisa Lutz', 2007)

Чтобы вывести на экран все поля каждого ряда, просто разделите их запятой и пробелом:

>>>> for row in db.execute('select * from book order by year'):

>…·····print(*row, sep=', ')

>…

>The Weirdstone of Brisingamen, Alan Garner, 1960

>Small Gods, Terry Pratchett, 1992

>Perdido Street Station, China Miéville, 2000

>Thud! Terry Pratchett, 2005

>The Spellman Files, Lisa Lutz, 2007

10. Используйте модуль sqlalchemy, чтобы подключиться к базе данных sqlite3 books.db, которую вы только что создали в упражнении 6. Как и в упражнении 8, считайте и выведите на экран графу title таблицы book в алфавитном порядке: