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

       

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


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

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

  • 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()



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