Python/Duomenų saugojimo diske būdai
Paprastam duomenų saugojimui diske galima naudoti 3 variantus
Tekstiniai failai
keistiGalima naudoti paprasčiausius tekstinius failus (http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files ). Kartais tam reikia pritaikyt Unikodo koduotę (pvz UTF-8) (keli paaiškinimai http://stackoverflow.com/questions/491921/unicode-utf8-reading-and-writing-to-files-in-python )
Tačiau paprastuose txt failuose reikia patiems rūpintis duomenų formatais, t.y., galvoti, kaip atsekti nuskaitomus duomenis, jei jie yra sudėtingesni. Python turi patogesnių įrankių.
Pickle
keistiTai standartinis Pythono kintamųjų/reikšmių saugojimas/užkrovimas iš failo. pvz: http://www.java2s.com/Code/Python/Database/UsePickletosaveandread.htm http://docs.python.org/library/pickle.html#example
pickle privalumas -- tiesiog naudoji Python struktūras; gali jas "apdoroto" standartine python sintakse (ciklai, filtravimas ir pan) ypatingas privalumas -- jei struktūros hierarchinės (pvz, zodynas zodyne ir dar kur nors masyvas žodyne ar pan šypsena)
vietoj SQL užklausų galima labai sėkmingai naudoti (sąrašų užklausas): http://docs.python.org/tutorial/datastructures.html#list-comprehensions pvz, daugybos lentelė, kuri atrenka tik didesnius už 5 skaičius [x*y for x in range(10) for y in range(10) if x*y > 5] arba galima labiau pabrėžti struktūrą [ [x*y for x in range(10) if x*y > 5 ] for y in range(10) ]
dar galima patogiai išnaudoti alternatyvios reikšmės saugojimą k = a if salyga else b matrica = [ [x*y if x*y > 5 else '---' for x in range(10)] for y in range(10)]
ps.: hierarchines struktūras patogu peržiūrėti su pprint from pprint import pprint pprint(matrica)
ps.: panašiai, kaip Pickle, galima naudoti ir Zope kūrėjų sukurtą universalią [ http://en.wikipedia.org/wiki/Zope_Object_Database | ZoDB ] priemonę. Tik jos naudojimo paruošimas yra ne visai paprastas. (http://docs.zope.org/zodb/ )
SQLite
keistisqlite: universalesnis formatas -- vėliau duomenis galima tvarkyti ir kitomis priemonėmis, pvz https://addons.mozilla.org/en-US/firefox/addon/5817
paprasčiausia DB (visos lentelės saugomos viename faile -- patogu perkelti į kitą kompiuterį ir pan) http://docs.python.org/library/sqlite3.html (pažr pvz iki skyrelio "12.13.1. ...") koncentruotesnis pavyzdys: http://snippets.dzone.com/posts/show/653 (tik vietoj "sqlite" dabar reiktų naudoti "sqlite3", ir atkomentuoti lentelės sukūrimą pirmą kart leidžiant programą (paskui vėl užkomentuoti) )
CSV (comma separated values)
keistiCSV irgi universalus (ir turbūt seniausias) -- galima peržiūrėti su OOo Calc ar Excel ar pan -- bet patogiausia, jei yra tik viena lentelė, ar bent jau nedaug ryšių tarp lentelių. http://licejus.lt/~gintas/python/04-koduotes.html http://docs.python.org/library/csv.html
DAL (Data Abstraction Layer)
keistiPythone yra keli įrankiai, kurie leidžia duomenis saugoti reliacinėse DB, patiems nerašant SQL komandų. Juos naudojant užtenka vieną kartą apsirašyti duomenų modelį (klases bei kintamuosius), pagal kurį programa sukuria DB lenteles, ir leidžia jas manipuliuoti. Vieni populiariausių: - http://www.sqlobject.org/ - http://www.sqlalchemy.org/