- •Email пакеті
- •Хабарларды талдау. Message классы
- •Хабарлама қалыптастыру
- •Тақырыпша өрісін талдау
- •Атаулар кеңістігі
- •Cgi модулі
- •Өндіруші ортасы
- •Zope және оның обьектілі моделі
- •Smtplib модулі
- •Poplib модулі
- •Url талдау үшін функия
- •Urllib2 мүмкіндіктері
- •Қорытынды
- •Обьект – байланыс
- •Объект-курсор
- •Обьектер-түрлері
- •Python – қосымшаларындағы деректер қоырмен жұмыс істеу
- •Деректер қорын толтыру
- •Деректер қорынан таңдау
- •Ескерту:
- •Қорытынды
- •11 Дәріс: Көп ағынды есептеулер
- •Көп ағынды бағдарлама мысалы
- •Threading модулінің функциясы
- •Thread классы
- •Қай кезде құлыпталу қажет?
Ескерту:
PostgreSQL ДҚБЖ үшін PyGreSQL-ді емес, psycopg алу керек, себебі, біріншіде параметрлерді execute() әдісіне параметрледі қою кезінде күн және уақыт үшін түрімен кішірек мәселе бар. Сонымен қатар, psycopg жылдамдық және ағындылық үшін (psycopg.threadsafety=2) оңтайландырылған.
Осылайша, осы дәрісте қолданылған мысалда, sqlite орынан мысалы, psycopg қолдануға болады: егер, әрине, тиісті модуль орнатылған болса, онда нәтижесі тура сол болу керек.
Бірақ жалпы жағдайда бір ДҚБЖ-нен басқасына ауысу кезінде сәйкессіздіктер туындауы мүмкін, тіпті DB-API нұсқасының біреуінің қолдауына қарамастан. Мысалы. модулдерде paramstyle өзгешеленуі мүмкін. Бұл жағдайда execute() шақырылымының параметрлерін қайта жасауға тура келеді. Басқа да себептері болуы мүмкін, сондықтан басқа ДҚБЖ-не ауысуын мұқият тексеру қажет.
DB-API интерфейсін тек деректер қоры ғана қолданбайды. Мысалы, fssdb жобасының өңдеушілері файлдық жүйеге DB-API 2.0 интерфейсін тұрғызуға ұмтылуда.
Жеткілікті жақсы теориялық негізіне және тұрақты іске асуына қарамастан, реляциялық модель – қазіргі кезде табысты қолданылатындардың бірі емес. Мысалға, Python-да XML тілі және онымен жұмыс істеу үшін интерфейстер қарастырылған. Көптеген тапсырма үшін XMLмәліметтерінің ағаштүріндегі моделі табиғи болып табылады, және қазіргі таңда зерттеу жүргізілуде, нәтижесінде XML-мен, реляциялық ДҚБЖ сияқты, сондай жеңіл және тұрақты жұмыс істеуге мүмкіндік береді. Python бағдарламалау тілі – осы зерттеулердің полигондарының бірі.
Нақты тапсырманы шеше отырып, бағдарламалық қамтаманы әзірлеуші тапсырманы шешу үшін ең қолайлы амалын таңдау керек. Тиімсіз (осы тапсырма үшін менсе қосалқы тапсырма үшін) деректер моделін таңдай отыра, көбі осы таңдауға келеді деген нұқсанмен. Нәтижесінде, өз табиғаты бойынша басқа модель ретінде елестету оңай, мәліметтерді таңдалған моделде сақтауға және өңдеуге тура келді, көбінесе аса табиғи қолжетімділік құрылымын және сақтауын моделдеу еріксіз. Сонымен, XML-ді реляциялық ДҚ-да сақтауға болады, ал кестелік мәліметтерді – XML-де, дегенмен бұл табиғи емес. Сол себептен қиындық және бағдарламалық өнімнің қателікке ұшырауы ұлғаяды, тіпті егер жоғары сапалы құралдар қолданылғанда да.
Қорытынды
Осы дәрісте Python-ның реляциялық деректер қорын басқару жүйесімен байланысу мүмкіндіктері қарастырылды. Python үшін, модулдерді құрастырушылардың барлығы реляциялық деректер қорымен түйісуін ұстануға тиісті, DB-API (нұсқа 2.0) деп аталатын стандарты құрастырылды. Осынын арқасында API қолданбалы бағдарлама коды деректер қорын қолданушы маркаға аз тәуелді болып барады, оны басқа деректер қорын қолданушы құрастырушылар түсіне алады. Нақты түрде DB-API 2.0, деректер қорымен модуль түйісуін, және олардың семантикасын қамтуы керек функция және класс атауларын сипаттайды. Модуль түйісуі деректер қорымен обьект-байланысының классын қамтуы керек және курсор үшін класс – қолданбалы деңгейде ДҚБЖ-мен қатынас арқылы болатын арнайы обьекті.
Мұнда SQLite ДҚБЖ және sqlite-ДҚБЖ түйісу үшін, Python кеңейтіліміне сәйкес модуль қолданылған, себебі ол DB-API 2.0 қолдайды және орнатылуда оңай. Оның көмегімен деректер қорымен жұмыс істеудің негізгі тәсілдері көрсетілді: кестелерді құру және толтыру, іріктеме орныдау және алынған мәліметтердің талдауы.
Дәрістің соңында, Python-бағдарламасына көптеген заманауи ДҚБЖ-мен жұмыс істеуге мүмкіндік беретін, басқа пакеттердің және модулдердің тізімі берілген.
Сілтеме
mxDateTime модулдері және т.б. http://www.lemburg.com/files/python/
SQLite ДҚБЖ http://sqlite.org
SQLite-мен түйісу модулі http://pysqlite.org
