Создание базы данных
Для создания базы данных нужно установить, какие таблицы (и другие объекты, например индексы) в ней будут храниться, а также определить структуры таблиц (имена и типы полей).
Задача — создание базы данных, в которой будет храниться телепрограмма. В этой базе будет таблица со следующими полями:
• tvdate,
• tvweekday,
• tvchannel,
• tvtime1,
• tvtime2,
• prname,
• prgenre.
Здесь tvdate — дата, tvchannel — канал, tvtime1 и tvtime2 — время начала и конца передачи, prname — название, prgenre — жанр. Конечно, в этой таблице есть функциональная зависимость (tvweekday вычисляется на основе tvdate и tvtime1), но из практических соображений БД к нормальным формам приводиться не будет. Кроме того, таблица будет создана с названиями дней недели (устанавливает соответствие между номером дня и днем недели):
• weekday,
• wdname.
Следующий сценарий создаст таблицу в базе данных (в случае с SQLite заботиться о создании базы данных не нужно: файл создастся автоматически. Для других баз данных необходимо перед этим создать базу данных, например, SQL–инструкцией CREATE DATABASE):
import sqlite as db
c = db.connect(database="tvprogram")
cu = c.cursor()
try:
cu.execute("""
CREATE TABLE tv (
tvdate DATE,
tvweekday INTEGER,
tvchannel VARCHAR(30),
tvtime1 TIME,
tvtime2 TIME,
prname VARCHAR(150),
prgenre VARCHAR(40)
);
""")
except db.DatabaseError, x:
print "Ошибка: ", x
c.commit()
try:
cu.execute("""
CREATE TABLE wd (
weekday INTEGER,
wdname VARCHAR(11)
);
""")
except db.DatabaseError, x:
print "Ошибка: ", x
c.commit()
c.close()
Здесь просто исполняются SQL–инструкции, и обрабатывается ошибка базы данных, если таковая случится (например, при попытке создать таблицу с уже существующим именем). Для того чтобы таблицы создавались независимо, используется commit().
Кстати, удалить таблицы из базы данных можно следующим образом:
import sqlite as db
c = db.connect(database="tvprogram")
cu = c.cursor()
try:
cu.execute("""DROP TABLE tv;""")
except db.DatabaseError, x:
print "Ошибка: ", x
c.commit()
try:
cu.execute("""DROP TABLE wd;""")
except db.DatabaseError, x:
print "Ошибка: ", x
c.commit()
c.close()
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ