Jednou z mých největších radostí jako vývojáře je naučit se, jak se různé technologie prolínají.
Během let jsem měl možnost pracovat s různými typy softwaru a nástrojů. Z mnoha nástrojů, které jsem použil, jsou dva z mých oblíbených Python a Structured Query Language (SQL).
V tomto článku se s vámi podělím o interakci Pythonu a různých SQL databází.
Budu mluvit o nejpopulárnějších databázích, SQLite, MySQL a PostgreSQL. Vysvětlím klíčové rozdíly každé databáze a odpovídající případy použití. A zakončím článek nějakým kódem Pythonu.
Kód vám ukáže, jak napsat SQL dotaz pro stahování dat z databáze PostgreSQL a ukládání dat do datového rámce pandas.
Pokud nejste obeznámeni s relačními databázemi (RDBMS), doporučuji, abyste si prostudovali Sameerův článek o základní terminologii RDBMS zde. Zbytek článku bude používat termíny, na které odkazuje Sameerův článek.
Populární databáze SQL
SQLite
SQLite je nejlépe známý jako integrovaná databáze. To znamená, že ke spuštění databáze nemusíte instalovat další aplikaci nebo používat samostatný server.
Pokud vytváříte MVP nebo nepotřebujete spoustu úložného prostoru pro data, budete chtít použít databázi SQLite.
Výhodou je, že se můžete rychleji pohybovat s databází SQLite ve srovnání s MySQL a PostgreSQL. To znamená, že budete mít omezenou funkčnost. Nebudete moci přizpůsobit funkce ani přidat spoustu funkcí pro více uživatelů.
MySQL/PostgreSQL
Mezi MySQL a PostgreSQL jsou výrazné rozdíly. To znamená, že vzhledem ke kontextu článku zapadají do podobné kategorie.
Oba typy databází jsou skvělé pro podniková řešení. Pokud potřebujete rychle škálovat, nejlepší volbou jsou MySQL a PostgreSQL. Poskytnou dlouhodobou infrastrukturu a posílí vaši bezpečnost.
Dalším důvodem, proč jsou skvělé pro podniky, je to, že zvládnou vysoce výkonné činnosti. Delší příkazy vkládání, aktualizace a výběru vyžadují velký výpočetní výkon. Tyto příkazy budete moci psát s menší latencí, než jakou by vám poskytla databáze SQLite.
Proč propojit Python a SQL databázi?
Možná se ptáte:„Proč bych se měl starat o propojení Pythonu a SQL databáze?“
Existuje mnoho případů použití, kdy by někdo chtěl připojit Python k databázi SQL. Jak jsem již uvedl dříve, možná pracujete na webové aplikaci. V tomto případě budete muset připojit databázi SQL, abyste mohli ukládat data přicházející z webové aplikace.
Možná pracujete v datovém inženýrství a potřebujete vybudovat automatizované ETL potrubí. Připojení Pythonu k databázi SQL vám umožní používat Python pro jeho automatizační schopnosti. Budete také moci komunikovat mezi různými zdroji dat. Nebudete muset přepínat mezi různými programovacími jazyky.
Propojení Pythonu a SQL databáze také usnadní práci s daty. Své dovednosti v Pythonu budete moci využít k manipulaci s daty z databáze SQL. Nebudete potřebovat soubor CSV.
Jak se propojují databáze Python a SQL
Databáze Python a SQL se připojují prostřednictvím vlastních knihoven Pythonu. Tyto knihovny můžete importovat do svého skriptu Python.
Jako doplňkové instrukce slouží databáze specifické pro Python knihovny. Tyto pokyny vedou váš počítač k tomu, jak může interagovat s vaší databází SQL. V opačném případě bude váš kód Python cizím jazykem databáze, ke které se pokoušíte připojit.
Jak nastavit projekt
Vezměme například databázi PostgreSQL, AWS Redshift. Nejprve budete chtít importovat knihovnu psycopg. Je to univerzální Python knihovna pro PostgreSQL databáze.
#Library for connecting to AWS Redshift
import psycopg
#Library for reading the config file, which is in JSON
import json
#Data manipulation library
import pandas as pd
Všimněte si, že jsme také importovali knihovny JSON a pandas. Importovali jsme JSON, protože vytvoření konfiguračního souboru JSON je bezpečný způsob, jak uložit přihlašovací údaje k databázi. Nechceme, aby je někdo sledoval!
Knihovna pandas vám umožní využívat všechny statistické možnosti pandas pro váš skript Python. V tomto případě knihovna umožní Pythonu ukládat data, která váš SQL dotaz vrátí, do datového rámce.
Dále budete chtít získat přístup ke svému konfiguračnímu souboru. json.load()
funkce načte soubor JSON, abyste v dalším kroku měli přístup k přihlašovacím údajům k databázi.
config_file = open(r"C:\Users\yourname\config.json")
config = json.load(config_file)
Nyní, když má váš skript Python přístup k vašemu konfiguračnímu souboru JSON, budete chtít vytvořit připojení k databázi. Budete si muset přečíst a použít přihlašovací údaje z vašeho konfiguračního souboru:
con = psycopg2.connect(dbname= "db_name", host=config[hostname], port = config["port"],user=config["user_id"], password=config["password_key"])
cur = con.cursor()
Právě jste vytvořili připojení k databázi! Když jste importovali knihovnu psycopg, přeložili jste kód Pythonu, který jste napsali výše, abyste mohli mluvit s databází PostgreSQL (AWS Redshift).
AWS Redshift by sám o sobě výše uvedenému kódu nerozuměl. Ale protože jste importovali knihovnu psycopg, mluvíte nyní jazykem, kterému AWS Redshift rozumí.
Na Pythonu je hezké, že má knihovny pro SQLite, MySQL a PostgreSQL. Budete moci snadno integrovat technologie.
Jak napsat dotaz SQL
Neváhejte a stáhněte si evropská fotbalová data do své databáze PostgreSQL. Pro tento příklad použiji jeho data.
Databázové připojení, které jste vytvořili v posledním kroku, vám umožňuje napsat SQL a následně uložit data do datové struktury vhodné pro Python. Nyní, když jste navázali připojení k databázi, můžete napsat dotaz SQL a začít stahovat data:
query = "SELECT *
FROM League
JOIN Country ON Country.id = League.country_id;"
Práce však ještě nejsou hotové. Musíte napsat nějaký další kód Pythonu, který provede SQL dotaz:
#Runs your SQL query
execute1 = cur.execute(query)
result = cur.fetchall()
Poté musíte vrácená data uložit do datového rámce pandy:
#Create initial dataframe from SQL data
raw_initial_df = pd.read_sql_query(query, con)
print(raw_initial_df)
Měli byste získat datový rámec pandy (raw_initial_df), který vypadá asi takto:
Existuje databáze pro každého
SQLite, MySQL a PostgreSQL mají všechny své výhody a nevýhody. Ten, který vyberete, by měl záviset na potřebách vašeho projektu nebo společnosti. Měli byste také zvážit, co potřebujete nyní oproti několika letům po cestě.
Důležité je zapamatovat si, že Python se dokáže integrovat s každým typem databáze.
Tento článek popisuje, co je možné připojením Pythonu k databázi SQL. Rád vidím způsoby, jak se software protínají a kombinují, aby přidali neuvěřitelnou hodnotu.
Pokud chcete více tohoto typu obsahu, najdete mě na Course to Hire! Chci pomoci více lidem naučit se kódovat a získat práci v technologii. V případě jakýchkoliv dotazů nebo pokud chcete jen pozdravit, se prosím obraťte :)