Реляциялы деректер орын басару жйесіні негізгі тсініктері

Реляциялы деректер оры – бл деректермен берілген кестелер жиынтыы.

Кесте – бл жолдар мен баандардан тратын тік брышты матрица. Кесте атынасты (relation) береді.

Жол – баандар рістерінен тратын жазба. рбір рісте кейбір мндер болуы ммкін, немесе арнайы NULL (бос) мні. Кестеде баандар саны кез келген болуы ммкін. Реляциялы модель шін баандарды орналасу реті аныталмаан жне маызды емес.

рбір баанны кестеде зіні аты жне трі болады.

DB-API 2 дегеніміз не

Таырыпшаа шыарылан аббревиатура екі ымды біріктіреді: DB (Database, деректер оры) жне API (Application Program Interface, олданбалы бадарлама интерфейсі).

Осылайша, DB-API деректер орымен берілген олданбалы бадарлама интерфейсін анытайды. Тменде сипатталан бл интерфейс, деректер орымен берілген Python – бадарламасын байланыстыру шін пайдаланылатын барлы кеейтілген модульдерді жзеге асыру керек. Біріай API (азіргі стте оны екінші нсасы) маркадан олданыстаы мліметтер орын елемеуге (абстрагироваться) ммкіндік береді, ажет болан жадайда тек бір ана функциялар жне дістер жиынтыын біле отырып, бір ДБЖ басасына згерту те оай.

DB-API 2.0 PEP 249-да млімделген (сайты http://www.python.org/peps/pep-0249.html/), жне тменде келтірілген млімет дл соан негізделген.

DB API 2.0 сипаттамасы

DB API 2.0 деректер орымен жмыс істеу шін кеейтілген модуль интерфейсін, орлармен берілген байланыс-обьектісіні дісін, аымдаы делетін жазбаны мезер-обьектісін, деректер трлері жне оларды конструкторлары шін ртрлі обьектілерін реттейді, сонымен атар молульдерін жзеге асырушы зірлеушілер шін сынымдарды амтиды. азіргі тада Python кеейтілген модуль арылы кптеген белгілі деректер орын олдайды. (http://www.python.org/topics/database/ адресі арылы берілген веб-парашасы арылы круге болады).

Модуль интерфейсі

Бл жерде айта кететіні, DB-API 2.0 талаптарын анааттандыру шін модульдерді сынуы тиіс.

Деректер орына ол жетімділік байланыс – обьектісі арылы жзеге асырылады (connection object). Байланыс – обьектісіні классы шін DB-API йлесімді модуль connect() функция – конструкторын амтамасыз етуі тиіс. Конструкторда параметрлер аттары келесідей болуы тиіс:

· dsn жол тріндегі деректер кзіні аты

· user олданушы аты

· password кілттік сз

· host ДБЖ жмыс жасайтын хост адресі

· database Деректер орыны аты.

Байланыс обьектісіні дісі кейінірек арастырылады.

Модуль оны негізгі мінездемелерінен тратын тратыларды анытайды:

· apilevel. DB-API нсасы ("1.0" немесе "2.0").

· threadsafety. Басарма хаттамаларын олдану кезіндегі модуль ммкіндіктерін сипаттайтын, бтін траты:

· 0 Модуль аындарды олдамайды.

· 1 Аындар бірлесіп модулдерді олдана алады, біра байланысты емес.

· 2 Аындар бірлесіп модулдерді жне байланысты олдана алады.

· 3 Аындар бірлесіп модулдерді, байланысты жне курсорды олдана алады (Мндаы бірлесіп олдану деп семафорларды олдануынсыз айтылан ресурстарды олдану ммкіндігі).

· paramstyle. Параметрлерді алмастырудаы белгілеулерді олдану трі. Бл тратыны келесі мндері болуы ммкін:

· "format" ANSI C (мысалы, "%s", "%i") тіл стилінде форматтау.

· "pyformat" Python стиліндегі атулы форматты спецификаторын олдану ("%(item)s")

· "qmark" Параметрлер алмастыруларыны орындарын белгілеу шін.

· "numeric" позиция нмерлерін олдану (":1").

· "named" Алмастырылатын параметр атын олдану (":name").

Модуль типтік ерекше жадай оиаларын белгілеу шін ерекше жадайлар атарын анытау керек: Warning (ескерту), Error (ате), InterfaceError (интерфейс ателігі), DatabaseError (деректер орына жататын, ате).Сонымен атар соы ерекше жадайды ішкі класстары: DataError (деректерді деуді ателігі), OperationalError (жмыстаы ателік немесе деректер орымен байланысты зілуі), IntegrityError (ттас деректер орыны ателігі), InternalError (деректер орыны ішкі ателігі), ProgrammingError (бадарламалы ателік, мысалы, SQL-срауыны синтаксисіндегі ателік), NotSupportedError (сралан асиеттерді олдау болмаан жадайда).

 

Обьект – байланыс

connect() функциясын табысты шаыру нтижесінде алынан, обьект – байланысты келесідей дістері болуы керек:

 

· close() Деректер орымен берілген байланысты жабады.

· commit() Транзакцияны тотатады.

· rollback() Басталан транзакцияны ашады (бастапы кйді алпына келтіреді). Аяталмаан транзакция кезінде байланысты жабу автоматты трде транзакция шегерімін тудырады.

· cursor() Осы байланысты олданушы обьект-курсорды айтарады. Егер деректер оры курсорды абылдамаса, тйісу модулі оларды еліктеу керек.

 

Транзакция бойынша деректер орын згертетін бір немесе одан кп операциялар группасы тсіндіріледі. Транзакция деректер орындаы логикалы блінбейтін операцияларымен сйкес, ал транзакцияны блшектеп орындау деректер орыны ттастыыны бзылуына алып келеді. Мысалы, ашаны бір шоттан баса, бірінші шотты азаюы бойынша жне екіншісіні кбеюі, операцияларды аудару транзакция болып табылады. commit() жне rollback() дістері аны трде транзакцияны басын жне соын білдіреді. Айтпашы, деректер орыны барлы трі емес транзакция механизімін олдайды.

 

Айта кететіні, DB-API 2.0 модулін жзеге асуына арай, обьект-байланысына ,осы байланысты курсор жмысыны айталануында, ссылканы сатау ажет. Кбінесе, обьект – байланысты кейбір атауа байланыстырмай, бірден обьект-курсорды алуа болмайтынын білдіреді. Жне де обьект-байланысты функциядан немесе обьект-курсор дісінен айтара, локальды айнымалыда алдыруа болмайды.

Объект-курсор

Курсор (аылшынша cursor - CURrrent Set Of Records, аындаы жазбалар жиынтыы) сранысты нтижесімен жмыс істеу шін ызмет етеді. Сранысты нтижесі детте жолдар-рістерімен жне жолдар-жазбаларымен берілген бір немесе бірнеше тік брышты кестелер болып табылады. осымша алынан кестелерді жне кестедегі жазбаларды бір-бірден ои жне деу алады, сондытан курсорда аындаы кесте жне жазба жайлы мліметтер саталады. Наты курсор кез келген уаытта SQL-нсаулыыны бір рет орындалуымен байланысан.

 

Обьект-курсорыны атрибуттары DB-API аныталан:

· arraysize. Жазба санымен те, fetchmany() дісімен айтарылатын атрибут. нсіз келісім бойынша 1-ге те.

· callproc(procname[, params]). params згеретін реттілігіндегі параметрлермен берілген procname саталан процедураны шаырады. Саталан процедура кейбір реттілік параметріні мнін згерте алады. діс, олжетімділігі fetch – дістерімен іске асатын, нтижені айтара алады.

· close(). Объект-курсорды жабады..

· description. Бл тек оу шін арналан олжетімді атрибут, жеті элементтік тізбектегі, тізбек болып табылады. рбір тізбектілік нтижені бір жолын сипаттайтын апаратты амтиды:

· (name, type_code, display_size, internal_size, precision, scale, null_ok). Бірінші екі элемент міндетті (аты жне трі), ал аландарыны (шыару шін арналан лшем, ішкі лшем, длділік, масштаб, бос мнні тапсырма ммкіндігі) орнына None мні болуы ммкін.

· execute(operation[, parameters]). Деректер орына немесе ДБЖ командасына сраныс орындайды. Параметрлер (parameters), жоарыда сиптталан paramstyle атрибутымен сйкесінше, деректер орында белгілер абылданып сынылуы ммкін.

· executemany(operation, seq_of_parameters). Берілген шаблона параметрлерді оя отырып сраулар немесе командалар сериясын оырндайды. seq_of_parameters параметрі параметрлер жиынтыыны тізбектілігін береді.

· fetchall(). Сраныс нтижесіні барлы жазбаларын айтарады (немесе барлы алан).

· fetchmany([size]). Тізбекті тізбектілігі тріндегі сраныс нтижесіні келесі кптеген жазбаларды айтарады. Бос тізбектілік мліметтерді жотыын білдіреді. size міндетті емес параметрі айтарылатын жазбаларды санын крсетеді (наты айтарылатын жазбалар аз болуы ммкін). нсіз келісім бойынша size обьект-курсорыны arraysize атрибутына те.

· fetchone(). Сраныс нтижесінен немесе None мліметтерді жотыынан келесі жазбаны айтарады (тізбек трінде).

· nextset(). Сраныс нтижесінен алынан, курсорды келесі мліметтер жиынтыыны басына аударады. Егер баса жиынты болмаса, None айтарады. Деректер орыны барлыы бір операция ішінде бірнеше нтиже жиынтыын айтаруды олдамайды.

· Rowcount. Соы сранысты орындау нтижесінен, алынан немесе озалан жазбалар саны. execute-сраныстарды жотыы жадайында немесе жазбалар санын крсету 1-ге те.

· setinputsizes(sizes). Операцияларда олданылан параметрлер шін, жады облысын алдын ала анытайды. р элемент бір кіріс параметріне сйкес келетін, sizes аргументі тізбектілікті береді. Элемент, жол зындыын беретін обьект-трі параметрге немесе бтін сандара сйкес, болуы ммкін. Ол жне де None мніне ие болуы ммкін, егер кіріс параметріні лшемі туралы, алдын ала немесе ол те лкен сияты болжамалы болса, ештее айтуа болмайды. діс execute-дісіне дейін шаырылып ою керек.

· setoutputsize(size[, column]). column нмерімен берілген жолдардаы, шыыс параметрі шін буфер лшемін орындайды. Егер column берілмесе, барлы лкен шыыс параметрлері шін діс лшемдерді орнатады. Мысалы, лкен бинарлы обьектілерді (Binary Large Object, BLOB) алу шін олданылуы ммкін.

Обьектер-трлері

DB-API 2.0 обьект-трлері шін атауын арастыруда, деректер орыны рістерін сипаттау шін олданылан:

 

Обьект Тр
STRING Жол жне символ
BINARY Бинарлы обьект
NUMBER Сан
DATETIME Кн жне уаыт
ROWID Жазба идентификаторы
None NULL-мні (жо мндер)

 

рбір деректер трлерімен (шын мнісінде бл - класстар) конструктор байланысан. DB-API йлесімді модуль келесідей конструторларды анытау керек:

· Date (жыл, ай,кн) Кн.

· Time (саат, минут, секунд) Уаыт.

· Timestamp (жыл, ай, кн, саат, минут,секунд) Кн-уаыт.

· DateFromTicks(secs) асыр басынан(1 атар 1970 жыл) secs секунд сан тріндегі кн.

· TimeFromTicks(secs) дл сондай уаыт.

· TimestampFromTicks(secs) дл сондай кн – уаыт.

· Binary(string) string жол негізіндегі лкенбинарлы обьект.