Python vs. SQL | Za i protiv
Pre otprilike dvadeset godina postojalo je samo nekoliko programskih jezika koje bi softverski inženjer morao dobro da zna. Još tada je strukturirani jezik upita ili SQL bio jezik koga je trebalo koristiti da dobijete brz uvid u neke podatke, doneti zapise i zatim izvlačiti preliminarne zaklјučke koji bi na kraju mogli da dovedu do izveštaja ili pisanja aplikacije.
Danas se podaci isporučuju u mnogim oblicima i formatima, a ne nužno i sinonimima za relacijske baze podataka. Podaci postoje unutar CSV datoteka, običnog teksta i na web-u, kao i u mnogim drugim različitim formatima. Upravo u ovom lavirintu podataka blista širok set Pythonovih biblioteka.
Sa velikim brojem pomoćnih biblioteka i pripadajućih platformi, Python je odličan programski jezik za brzo i iterativno istraživanje podataka. Python-ove biblioteke uklјučuju sve, od vizualizacije podataka do statističke analize, što programerima čini pogodnim za skok u analizu podataka i započinjanje identifikacije obrazaca.
Koristite slučajeve za SQL i Python
SQL je dizajniran za ispitivanje i izvlačenje podataka iz tabela unutar baze podataka. SQL je dobar u tome što vam kao programeru omogućuje neprimetno ujedinjenje (ili spajanje) nekoliko podataka zajedno. Kombinovanje podataka iz više tabela je klјučna snaga.
Međutim, SQL nije dizajniran za manipulisanje ili pretvaranje podataka u druge formate. Vrste manipulacije podacima višeg nivoa koje su uobičajene u nauci o podacima, kao što su statistička analiza, regresijski testovi i manipulacija podacima iz vremenskih serija veoma je teško postići isklјučivo korišćenjem SQL-a.
Python, s druge strane, ima dobro poznatu biblioteku za analizu podataka nazvanu Pandas, koja je posebno dizajnirana za analizu i manipulaciju podacima.
Python je posebno pogodan za strukturirane (tabelarne) podatke koji mogu da se donesu pomoću SQL-a i zatim zahteva dalјa manipulacija, što bi moglo da bude teško da se postigne korišćenje samo SQL-a. To dovodi do sledećeg pitanja: Kada treba koristiti Python a kada SQL?
Razlike u SQL-u i Python-u
Koristite SQL da biste preuzeli osnovne podatke potrebne za analizu, a zatim koristite specijalizovane Python biblioteke da biste ih obradili.
Pogledajmo primer pomoću SQL-a:
Recimo da imamo sledeću tabelu sa podacima o hotelima koja se zove hoteli. Ovo je mali uzorak skupa podataka koji se nalaze u tabeli. Ova tablica može da sadržava hilјade ili milione reda (unosa), od kojih svaki predstavlјa hotel.
Ime | Grad | Ulica | Cena | Valuta | Zvezdice | Telefon | |
1 Via dei Valeri | Rim | Via Dei Valeri 1 | 54 | Američki dolar | 5 | ||
108 Minutes Hostel | Moskva | Malaya Ordynka Street 5/6 Bld.4 App.3 | 24 | Američki dolar | 1 | 7 (495) 795-4259 | |
1-vi Arbat hostel u Novinsky-om | Moskva | Novinsky Bulvar 1/2 App 64 | 26 | Američki dolar | 1 | 7 (967) 0130047 | |
A Plus Hostel | Prag | Na Florenci 14 13/33 | 14 | Američki dolar | 3 | ||
Aalborg Hotel Amsterdam | Amsterdam | Sarphatipark 106 | 39 | Američki dolar | 3 | 106 – 1073 | |
Adagio Access Vanves Porte de Chatillon | Pariz | 5 rue Aristide Briand, | 53 | Američki dolar | 3,5 | 33140955600 | |
Advisor Hotel Hanoi Hanoj | Hanoi | 51 Nguyen Sieu Street Hoan Kiem | 13 | Američki dolar | 2 | 39935766 | |
Afrian House Hotel | Kairo | 15 Emad El Din Street | 11 | Američki dolar | 1 | ||
Agon Aldea Hotel Berlin | Berlin | Bulowstrasse 19-22 | 22 | Američki dolar | 3 | ||
Agustina Serviced Apartments Quezon City | Manila | No. 9 18th St. Brgy Kalusugan (New Manila) | 27 | Američki dolar | 3 | 2098647-25 |
Uporedimo kako bismo mogli da upitamo ovaj skup podataka koristeći SQL nasuprot Python-u koristeći Pandas.
Vrsta akcije | SQL | Python koristeći Pandas |
Pronađite sve hotele | SELECT * FROM hotels | hotels |
Pronađite prva 3 hotela | SELECT * FROM hotels LIMIT 3 | hotels.head(3) |
Pronađite imena hotela u Parizu | SELECT Name FROM hotels WHERE City = ‘Paris‘ | hotels[hotels.City == ‘Paris‘].Name |
Kao što vidimo, do sada su oba prilično slična. Međutim, stvari počinju da postaju zanimlјivije kada moramo da obavimo složenije upite.
Primeri kada je Python lakši za upotrebu od SQL-a
Recimo da smo napravili neke preliminarne upite podataka, a sada imamo tabelu skupa podataka koja se zove hotels_by_city, a koja sadrži broj hotela po gradu, a izgleda ovako:
Grad |
Hotel_Count |
Pariz | 567 |
Moskva | 482 |
Uz ovaj novi skup podataka, recimo da želimo da naručimo rezultate po Hotel _Count i odaberemo samo prvih deset gradova sa najvećim brojem. To bismo mogli da učinimo na sledeći način:
SQL |
Python koristeći Pandas |
SELECT City FROM hotels_by_city ORDER BY Hotel_Count DESC LIMIT 10 | hotels_by_city.nlargest(10, columns=’Hotel_Count‘) |
Možete početi da vidite da Pandas sintaksa postaje lakša za shvatanje i pisanje, jer primeri preuzimanja podataka postaju malo složeniji.
Hajde da dodamo sloj složenosti, tako da sada treba da utvrdimo koristeći ovu novu tabelu podataka, koja je sledećih deset hotela, nakon prvih deset.
SQL | Python koristeći Pandas |
SELECT City FROM hotels_by_city ORDER BY Hotel_Count DESC LIMIT 10 OFFSET 10 | hotels_by_city.nlargest(20, columns=’Hotel_Count‘).tail(10) |
Primetite kako Pandas sintaksa ostaje gotovo nepromenjena kako se složenost povećava, dok SQL sintaksa postaje složenija za čitanje.
Drugi način razmišlјanja o razlikama između Pythona i SQL-a je taj što SQL pruža podešavanje, a Python vas vodi odatle. SQL vam omogućava da započnete sa podacima koji su strukturirani u tabele. Jednom kada dobijete tabele, koristite Python za grananje različitih analiza u različitim pravcima.
Vrste SQL-a
MySQL (izgovara se MY Sequel) je najpopularnija vrsta SQL baze podataka. Super-štreberski način da se ova vrsta SQL baze podataka odnosi kao sistem upravlјanja relacijskim bazama podataka (ili RDBMS). To manje-više znači da je to baza podataka sa mnogim tabelama koje se na neki način povezuju. Sve WordPress instalacije podrazumevano koriste MySQL.
PostgreSQL (koji se često naziva i „Postgres“) je sličan MySQL-u, ali je znan da je izdržljiviji. Međutim, postavlјanje Postgresa za novajlije često može da bude teško, tako da ako ste novi u ovome, MySQL je verovatno najbolјa opklada.
SQLite (izgovara Sequel Lite) je veoma prenosiva i kompaktna baza podataka. SQLite se najčešće koristi za testiranje i veoma, veoma jednostavne aplikacije.
Kada odabrati Python vs. SQL?
SQL sadrži mnogo jednostavniji i uski skup naredbi u poređenju sa Python-om. U SQL upitima se gotovo isklјučivo koristi neka kombinacija JOINS, agregatnih i podupitnih funkcija.
Python je, nasuprot tome, kolekcija specijalizovanih Lego setova, svaki sa određenom namenom. Svaka biblioteka ima prilagođene komade za izgradnju određene vrste određene stvari: Pandas za analizu podataka, PyPDF2 za PDF manipulaciju, Scikit-učenje za mašinsko učenje i još mnogo toga.
Koji jezik treba prvo da naučimo – Python ili SQL?
Mislimo da je najbolјe mesto za početak učenje SQL-a. SQL je suštinsko sredstvo za bilo kakvu vrstu podataka iz relacijskih baza podataka, čak i ako vaš primarni posao ima malo ili nema nikakve veze sa analizom podataka.
Čak i ako je SQL upit deset puta duži od ekvivalentne skripte Python-a, lakše je to učiniti kada radite ekvivalent u Python-u jer ga čita kao engleski. Zapamtite, učenje je napornije od kuckanja i zahteva više vremena.
Nakon što steknete razumno znanje o SQL-u, da bar možete da napišete upit koji spaja dve tabele zajedno, pokušajte da ponovo napišete neku istu logiku u Python-u koristeći Pandas.
Uporedni grafikon
Python | SQL | |
Osnovan | Napravljen 1991. godine od strane Guido Van Rossum-a | Napravljen od Donald D. Chamberlin i Raymond F. Boyce 1974. godine |
Pros | Svestran, dinamičan, lagan, širok opseg | Vrlo lagana krivulјa učenja, sintaksa nalik engleskom. |
Cons | Krivulјa strmeg učenja od SQL | Uglavnom se primenjuje samo u relacijskim bazama podataka (uz nekoliko izuzetaka) |
Veb biblioteke | Biblioteka za gotovo sve | Nijedna, SQL je samo SQL. |
Vrste | Python 2 i Python 3 su dve najčešće vrste Pythona | MySQL, SQL Server, PostgreSQL, SQLite |
Upotreba | Google
YouTube DropBox Skoro svaka visokotehnološka kompanija. Štaviše, Python se široko koristi u mnogim organizacijama za nauku o podacima i istraživanje. |
Skoro svaki web sajt na Internetu koristi SQL bazu podataka u svojoj pozadini. |