Psycopg2

Výukový program Psycopg2

Výukový program Psycopg2

Výukový program pro Python, PostgreSQL a Psycopg2

K vývoji aplikace nad rámec jednoduchého skriptu je nutné uchovat data mimo paměť do databáze.  Existuje mnoho možností pro databázi, ale PostgreSQL je robustní open source platforma, kterou lze snadno škálovat do produkce.

Python a PostgreSQL lze propojit a rychle tak vyvíjet výkonné aplikace.  Psycopg je adaptér PostgreSQL, který lze použít k využití PostgreSQL prostřednictvím knihovny založené na Pythonu.  V tomto kurzu se seznámíte s instalací Psycopg2 a nějakého kódu Pythonu, abyste předvedli jeho použití.

Psycopg2 můžete nainstalovat pomocí níže uvedeného příkazu terminálu pip.

$ pip instalace psycopg2

Při instalaci byste měli vidět výstup terminálu níže.

Sbírání psycopg2
Stahování psycopg2-2.7.3.2-cp27-cp27m-
macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10
_10_x86_64.whl (1.7 MB)
100% | ██████████████████████████████████████ | 1.7 MB 397 kB / s
Instalace shromážděných balíčků: psycopg2
Úspěšně nainstalován psycopg2-2.7.3.2
Bradleys-Mini: ~ BradleyPatton $

Chcete-li importovat balíček Psycopg2 do vaší aplikace v Pythonu, použijte níže uvedený řádek kódu.

import psycopg2

Abych získal nějaké údaje k načtení do naší databáze, vypůjčil jsem si nějaký kód z předchozího tutoriálu o pandách. Níže uvedený kód vytvoří pandový datový rámec s historickými daty.  To se pak využije k vytvoření tabulky v tabulce PostgreSQL.

def get_data (symboly, start_date, end_date):
panel = data.DataReader (symboly, 'yahoo', start_date, end_date)
df = panel ['Zavřít']
df.sloupce = mapa (str.nižší, df.sloupce)
hd = seznam (df)
tisk df.hlava()
tisk hd
návrat df

Nyní nastavím nějaký úklidový kód používaný ke spuštění tutoriálu. Tyto dvě metody budou použity k volání metod Psycopg2, které vytvoříme.

def tutorial_run ():
symboly = ['SPY', 'AAPL', 'GOOG']
df = get_data (symboly, '2006-01-03', '2017-12-31')
pokud __name__ == "__main__":
tutorial_run ()

Abychom se mohli připojit k databázi PostgreSQL, budeme muset přidat níže uvedenou metodu. Try \ Except poskytuje zpracování chyb v případě, že místní databáze není spuštěna nebo jsou do databáze předány nesprávné parametry připojení. Metoda connect v knihovně Psycopg2 se připojí k databázi s parametry předanými v připojovacím řetězci. Vaše parametry pro dbname, uživatele a heslo se mohou lišit. Pokud připojení z nějakého důvodu selže, do konzoly se zapíše chybová zpráva. Tato metoda vrací objekt připojení zpět na naši metodu volání, kde jej lze použít pro další databázové operace.

def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "heslo =" heslo ""
Snaž se:
conn = psycopg2.připojit (proti)
tisk "Připojeno"
až na:
tisk "Nemohu se připojit k databázi"
zpětné připojení

Jakmile jsme navázali připojení k databázi PostgreSQL, můžeme načíst naše data z metody get_data () do naší databáze. Díky Psycopg2 a pandám je tento proces velmi jednoduchý.

První řádek definuje metodu, kterou by pandy měly použít pro připojení k databázi za účelem kopírování DataFrame. Poskytnete stejné parametry jako vaše metoda připojení. Druhý řádek kódu přetrvává DataFrame do databáze PostgreSQL metodou to_sql ().

def create_table (tabulka, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [email protected]: 5432 / tutorial')
df.to_sql (table, engine, if_exists = 'replace')

Rychlý pohled do našeho terminálu pgAdmin PostgreSQL ukazuje, že kód úspěšně načetl DataFrame do tabulky „zavřít“. Nyní, když máme do naší databáze načtena nějaká data. Můžeme použít psycopg ke spuštění některých dotazů na data. Níže uvedená metoda je konstruována tak, aby převzala spojení vytvořené v naší první metodě a spustila dotaz v naší databázi PostgreSQL. Aby bylo možné vytvořit 4 objekty SQL, musíme přidat další příkaz pro import.

z importu psycopg2 sql

Aby bylo možné vytvářet dynamické příkazy SQL, psycopg používá formátování řetězce k naplnění proměnných do řetězce pomocí operátorů% s a .

PostrgreSQL rozlišuje velká a malá písmena. V metodě get_data () jsme vynutili záhlaví sloupců malými písmeny. Index nebyl v této instrukci zahrnut. Aby bylo možné v dotazu předat záhlaví sloupce „Data“, musíme jej předat PostgreSQL v uvozovkách. Chcete-li to provést v řetězci v Pythonu, musíte před uvozovkami poslat řídicí znak „\“.

Můžeme nahradit „% s“ v řetězci pomocí níže uvedené syntaxe formátování řetězce pythonu. Toto nahradí% s naším datovým parametrem dt.

Spustit vytvořený dotaz SQL. Poté jej musíte předat kurzorům .metoda execute (). Voláním .metodou fetchall () vrátíte výsledky dotazu. Po tisku na konzolu můžete zobrazit výsledky.

def get_row (dt, conn):
cr = spoj.kurzor()
dotaz = sql.SQL ("VYBRAT aapl z blízka KDE" Datum "= '% s'"% dt)
cr.provést (dotaz)
tisknout cr.fetchall ()

Ke spuštění této funkce přidáme následující řádek kódu do metody tutorial_run (). Měli byste získat podobné výsledky jako níže.

get_row ("2017-12-29", připojení)

V další metodě použijeme metody formátu řetězce k předání více parametrů do našeho dotazu. Tento dotaz bude mít datum a tři sloupce. Kromě použití operátoru% s použijeme operátor ke spojení řetězcových proměnných do řetězce a jejich vložení do našeho řetězce dotazu. Náš řetězec dotazu nyní používá spojení níže s oddělovačem „,“ k předání více názvů sloupců do našeho dotazu.

def get_cols (dt, col1, col2, col3, conn):
cr = spoj.kurzor()
dotaz = sql.SQL ("SELECT od konce KDE" Datum "= '% s'"% dt).formát(
sql.SQL (',').připojit ([sql.Identifikátor (col1), sql.Identifikátor (col2), sql.Identifikátor (col3)]))
cr.provést (dotaz)
tisknout cr.fetchall ()

Aby bylo možné použít naši novou metodu, přidám následující řádek do naší metody tutorial_run (). Měli byste vidět výsledky níže.

get_cols ("2017-12-29", "aapl", "spy", "goog", conn)

Další metoda, kterou napíšeme, použije dvě nahrazení řetězců k vytažení všech dat v naší tabulce s výjimkou našeho indexu. Tato metoda navazuje na naši předchozí metodu přidáním druhé notace závorky nahrazení „1“. Tentokrát jsou závorky očíslovány tak, aby byly nahrazeny v kódu pojmu formát objednávky. Naše nová metoda spojuje tři parametry sloupce s oddělovačem čárky. Druhým parametrem metody format je navíc proměnná tabulka. Řetězec dotazu je poté vytvořen nahrazením závorek parametry v metodě formátování v uvedeném pořadí. To je 0 = sloupce a 1 = název tabulky.

def get_tab (table, col1, col2, col3, conn):
cr = spoj.kurzor()
dotaz = sql.SQL („VYBRAT 0 z 1“).formát(
sql.SQL (',').připojit ([sql.Identifikátor (col1), sql.Identifikátor (col2),
sql.Identifikátor (col3)]), sql.Identifikátor (tabulka))
cr.provést (dotaz)
tisknout cr.fetchall ()

Aby bylo možné použít naši novou metodu, přidám níže uvedený řádek do naší metody tutorial_run (). Měli byste vidět výsledky níže.

get_tab ("close", "aapl", "spy", "goog", conn)

V knihovně psycopg je možné prozkoumat mnohem více metod. To by vám mělo pomoci začít dobře rozumět funkcím psycopgu. Níže jsem poskytl několik dalších zdrojů na stránkách dokumentace, které vám umožní podrobněji prozkoumat knihovnu.

Celý kód

import psycopg2
z importu psycopg2 sql
importovat pandas_datareader jako data
def get_data (symboly, start_date, end_date):
panel = data.DataReader (symboly, 'yahoo', start_date, end_date)
df = panel ['Zavřít']
df.sloupce = mapa (str.nižší, df.sloupce)
hd = seznam (df)
tisk df.hlava()
tisk hd
návrat df
def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "heslo =" heslo ""
Snaž se:
conn = psycopg2.připojit (proti)
tisk "Připojeno"
až na:
tisk "Nemohu se připojit k databázi"
zpětné připojení
def create_table (tabulka, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [email protected]: 5432 / tutorial')
df.to_sql (table, engine, if_exists = "replace")
def get_row (dt, conn):
cr = spoj.kurzor()
dotaz = sql.SQL ("VYBRAT aapl z blízka KDE" Datum "= '% s'"% dt)
cr.provést (dotaz)
tisknout cr.fetchall ()
def get_cols (dt, col1, col2, col3, conn):
cr = spoj.kurzor()
dotaz = sql.SQL ("SELECT od konce KDE" Datum "= '% s'"% dt).formát(
sql.SQL (',').připojit ([sql.Identifikátor (col1),
sql.Identifikátor (col2), sql.Identifikátor (col3)]))
cr.provést (dotaz)
tisknout cr.fetchall ()
def get_tab (table, col1, col2, col3, conn):
cr = spoj.kurzor()
dotaz = sql.SQL („VYBRAT 0 z 1“).formát(
sql.SQL (',').připojit ([sql.Identifikátor (col1), sql.Identifikátor (col2),
sql.Identifikátor (col3)]), sql.Identifikátor (tabulka))
cr.provést (dotaz)
tisknout cr.fetchall ()
def tutorial_run ():
conn = connect ()
symboly = ['SPY', 'AAPL', 'GOOG']
df = get_data (symboly, '2006-01-03', '2017-12-31')
create_table ("zavřít", df)
get_row ("2017-12-29", připojení)
get_cols ("2017-12-29", "aapl", "spy", "goog", conn)
get_tab ("close", "aapl", "spy", "goog", conn)
pokud __name__ == "__main__":
tutorial_run ()

Reference

inic.org / psycopg
inic.org / psycopg / docs / install.html
http: // initd.org / psycopg / docs / sql.html
wiki.postgresql.org / wiki / Psycopg2_Tutorial

Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...
Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...
Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...