Создание базы данных

Для создания базы данных нужно установить, какие таблицы (и другие объекты, например индексы) в ней будут храниться, а также определить структуры таблиц (имена и типы полей).

Задача — создание базы данных, в которой будет храниться телепрограмма. В этой базе будет таблица со следующими полями:

• 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% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ