{ "cells": [ { "cell_type": "markdown", "id": "instructional-favor", "metadata": {}, "source": [ "## Ukázka zpracování dat z SQLite databáze" ] }, { "cell_type": "markdown", "id": "90da2d0b", "metadata": {}, "source": [ "Nejprve naimportujeme knihovny a potřebné moduly. Pro účely notebooku je třeba přidat cestu k modulu pywsdp do PATH." ] }, { "cell_type": "code", "execution_count": 1, "id": "fewer-right", "metadata": {}, "outputs": [], "source": [ "import os\n", "import sys\n", "library_path = os.path.abspath(os.path.join(\"../../\"))\n", "sys.path.append(library_path)\n", "\n", "from pywsdp.modules import CtiOS\n", "from pywsdp.modules.CtiOS import OutputFormat\n" ] }, { "cell_type": "markdown", "id": "82a6a8cc", "metadata": {}, "source": [ "Příhlásíme se k modulu CtiOS. Pro tento účel využijeme testovací přístupové údaje do DP." ] }, { "cell_type": "code", "execution_count": 2, "id": "6a289697", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ctiOS - INFO - Logovaci zpravy ulozeny v adresari: /tmp/ctiOS\n" ] } ], "source": [ "creds_test = [\"WSTEST\", \"WSHESLO\"]\n", "ctios = CtiOS(creds_test, trial=True)" ] }, { "cell_type": "markdown", "id": "cd87a621", "metadata": {}, "source": [ "Definujeme cesty k vstupní databázi a k výstupnímu adresáři, kam budeme chtít updatovanou databázi uložit." ] }, { "cell_type": "code", "execution_count": 3, "id": "d330f440", "metadata": {}, "outputs": [], "source": [ "db_path = os.path.abspath(\n", " os.path.join(library_path, \"tests\", \"data\", \"input\", \"ctios_template.db\")\n", ")\n", "\n", "vystupni_adresar = os.path.abspath(\n", " os.path.join(library_path, \"tests\", \"data\", \"output\")\n", ")" ] }, { "cell_type": "markdown", "id": "0cf876bf", "metadata": {}, "source": [ "Pokud chceme změnit cestu k logovacímu adresáři, uděláme to následovně:" ] }, { "cell_type": "code", "execution_count": 6, "id": "b1f71745", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ctiOS - INFO - Logovaci adresar nastaven na cestu: /home/linduska/pywsdp/logs\n" ] } ], "source": [ "ctios.log_adresar = \"/home/linduska/pywsdp/logs\"" ] }, { "cell_type": "markdown", "id": "f52cd569", "metadata": {}, "source": [ "Načteme identifikátory z databáze (pro účely ukázky omezíme počet načtených identifikátorů na 5)." ] }, { "cell_type": "code", "execution_count": 4, "id": "72796ff9", "metadata": {}, "outputs": [], "source": [ "parametry_ctiOS_db = ctios.nacti_identifikatory_z_db(db_path, \"SELECT * FROM OPSUB order by ID LIMIT 5\")" ] }, { "cell_type": "markdown", "id": "7dc3739a", "metadata": {}, "source": [ "Pošleme požadavek a vypíšeme si statistiku zpracovaných identifikátorů." ] }, { "cell_type": "code", "execution_count": 5, "id": "2719c63b", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ctiOS - INFO - \n", "ctiOS - INFO - Požadovaná akce byla úspěšně provedena.\n", "ctiOS - INFO - POSIDENT /AOrBGOFR+4GtqsAvOXC/3kKd0OCEPBVRfEsIPHeW3CoGcU1dio8gmrulsH5/KEvySRvbRT2hlDOXICKukDLldMgNY5z+yASe8F1rqBlKug= USPESNE STAZEN\n", "ctiOS - INFO - POSIDENT +lQ0Ne+Jhd5K4uvds1/KT8qqJcoA/eJ5OloIoqvCQi04X93kbmO62f/i2fqJgk62odrpl2ye04ue7tlKR93hckH4u46kVMoHQWmYF/rBWMA= USPESNE STAZEN\n", "ctiOS - INFO - POSIDENT +VKfYaKhJDrRHUWeS2e7xO7g+HhFQapZMPa5kamaF/wSOs6r3xEPEVFhtUlWqcXO9GTopZEjqpsTbsKhZmN7VxYJSxvgcgTWMGdxYkQVCaU= USPESNE STAZEN\n", "ctiOS - INFO - POSIDENT /ipU68hnjrq1J7ZDi4JBaAyBiKjxZzpGZSVIfv8yFMKSKy3PpT/lba/0c4YCdqvrexVCCAL0MxBbob3A75l2Tnkgw/HHXtm0+abSHVywLEM= USPESNE STAZEN\n", "ctiOS - INFO - POSIDENT 00ep7V5fFBZoFMeOfcAOPMRtu0G9svLcsDyC/fYkJk3EbFIqbw2kpRaC1jjS1V8bjacEwrp/SdxXZXdtwDzFj3vKzXvHF7k7HiDpVtv6fPAUIS/cKLcyZ7viQd7pE5FE USPESNE STAZEN\n", "ctiOS - INFO - Celkovy pocet dotazovanych identifikatoru na vstupu: 5\n", "ctiOS - INFO - Pocet odstranenych duplicitnich identifikatoru: 0\n", "ctiOS - INFO - Pocet pozadavku, do kterych byl dotaz rozdelen (pocet dotazu na server): 1\n", "ctiOS - INFO - Realny uspesne zpracovanych identifikatoru: 5\n", "ctiOS - INFO - Pocet neplatnych identifikatoru: 0\n", "ctiOS - INFO - Pocet expirovanych identifikatoru: 0\n", "ctiOS - INFO - Pocet identifikatoru k neexistujicim OS: 0\n" ] } ], "source": [ "slovnik, slovnik_chybnych = ctios.posli_pozadavek(parametry_ctiOS_db)" ] }, { "cell_type": "markdown", "id": "08d1cbcc", "metadata": {}, "source": [ "Uložíme získané osobní údaje do databáze." ] }, { "cell_type": "code", "execution_count": 6, "id": "15a1b70d", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ctiOS - INFO - Vystup byl ulozen zde: /home/linduska/pywsdp/tests/data/output/ctios_21_20_37_10_01_2023.db\n" ] } ], "source": [ "vystup = ctios.uloz_vystup(\n", " slovnik, vystupni_adresar, OutputFormat.GdalDb\n", ")" ] }, { "cell_type": "markdown", "id": "3ebee1ce", "metadata": {}, "source": [ "Podle vyplněného atributu *jmeno* (v případě fyzické osoby) nebo *nazev* (v případě právnické osoby nebo SJM) zkontrolujeme počet aktualizovaných řádků." ] }, { "cell_type": "code", "execution_count": 7, "id": "a3f0e116", "metadata": {}, "outputs": [], "source": [ "import sqlite3\n", "con = sqlite3.connect(vystup)\n", "cur = con.cursor()\n", "for row in cur.execute(\"SELECT count(*) FROM OPSUB where jmeno is not null or nazev is not null\"):\n", " assert row == (5,)\n", "con.close()" ] }, { "cell_type": "markdown", "id": "93cc7998", "metadata": {}, "source": [ "Může se stát, že nechceme kopírovat celý soubor databáze do nového umístění, ale pouze chceme aktualizovat vstupní databázový soubor. Toho můžeme dosáhnout takto:" ] }, { "cell_type": "code", "execution_count": 8, "id": "edb04e1f", "metadata": {}, "outputs": [], "source": [ "vystup = ctios.uloz_vystup_aktualizuj_db(\n", " slovnik\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 5 }