Въведение в ZODB - КОМЕТ

За много задачи релационните бази данни са добро решение, но понякога релационните бази данни са трудни за съвпадение с обектния модел на приложението. Ако има много различни взаимосвързани обекти със сложни взаимодействия, както и променлива схема, тогава използването на ZODB ще бъде най-доброто решение.

Отличителният белег на ZODB е прозрачността. Не е необходимо да пишете код, за да пишете изрично или да четете обекти от базата данни. Просто добавяте постоянния си обект към контейнер, който действа като речник на Python. Всичко, което се съдържа в този речник, ще бъде запазено в базата данни. Този речник се нарича корен на базата данни. Това е като вълшебна торба, всеки обект на Python, който добавите там, става постоянен.

Всъщност има някои ограничения за това какво можете да запазите в ZODB. Можете да запазите всеки обект, който може да бъде преобразуван в стандартен формат на различни платформи, като използвате модула за туршия.

Един прост пример

Първото нещо, което трябва да направите, е да създадете коренна директория. Това се случва по време на първата връзка с хранилището. ZODB поддържа много съхранение с възможност за включване, но целта на тази статия е да ви покаже как да използвате FileStorage. със запазване на обекти във файл. Други магазини поддържат съхраняване на данни в релационни бази данни, в бази данни на Berkely и съхранение на отдалечени сървъри на бази данни.

Първо трябва да инсталирате ZODB. ZODB се доставя със Zope, така че най-лесният начин да инсталирате и получите ZODB е да инсталирате Zope и да използвате ZODB, включен в него. Можете също да изтеглите и инсталирате ZODB отделно, за това следвайте инструкциите в статията.

След като инсталирате ZODB, можете да започнете да експериментирате с него направо от командния ред на интерпретатора на Python. Например опитайте следния код:

Тук създаваме и използваме файла "mydatabase.fs" за съхраняване на данни. След това базата данни трябва да се отвори с помощта на метода open (). Той ще върне обект за връзка с база данни. Обектът за връзка ви позволява да получите достъп до root контейнера, като извикате метода root ().

Основният контейнер е речник, който съдържа всички постоянни обекти. Например можете да запазите прост списък от низове в него:

Вече променихте базата данни, като добавихте нов обект, но промените все още не са запазени. За да запазите промените си, трябва да завършите транзакцията:

Транзакцията е група от промени, приложени като една атомна операция. Това е много мощен инструмент, ще ви го покажа в една от следващите ми статии. Макар да си мислите, че затварянето на транзакция е нещо като контролна точка, където запазвате всички промени, които сте направили преди.

Нека сега проверим дали данните всъщност са запазени. Нека първо да затворим връзката си:

След това излезте от интерпретатора на Python. Сега започнете отначало и се свържете с току-що създадената база данни:

И нека разгледаме нашия обект в основния контейнер:

Там е нашият списък. Ако използвате релационна база данни, ще трябва да проектирате SQL заявка дори за съхраняване на прост списък на Python като примера по-горе. Също така ще трябва да внедрите код, за да конвертирате SQL заявката обратно в списък, когато искате да я използвате отново. Не е необходимо да правите нищо подобно, когато използвате ZODB. Използването на ZODB е почти прозрачно и базираните на ZODB програми често изглеждат подозрително прости.