Psycopg2

Výukový program Psycopg2

Výukový program Psycopg2

Výukový program pre Python, PostgreSQL a Psycopg2

Ak chcete vyvinúť aplikáciu presahujúcu jednoduchý skript, je potrebné uchovať údaje mimo pamäte do databázy.  Existuje veľa možností pre databázu, ale PostgreSQL je robustná platforma otvoreného zdroja, ktorá sa dá ľahko rozšíriť na produkciu.

Medzi programami Python a PostgreSQL možno rýchlo rozvíjať výkonné aplikácie.  Psycopg je adaptér PostgreSQL, ktorý sa dá použiť na využitie PostgreSQL prostredníctvom knižnice založenej na Pythone.  Tento výukový program vás prevedie inštaláciou programu Psycopg2 a niektorého kódu Pythonu, aby ste demonštrovali jeho použitie.

Psycopg2 môžete nainštalovať pomocou nižšie uvedeného príkazu terminálu pip.

$ pip nainštalovať psycopg2

Pri inštalácii by ste mali vidieť výstup terminálu nižšie.

Zbieranie psycopg2
Sťahuje sa 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
Inštalácia zhromaždených balíkov: psycopg2
Úspešne nainštalovaný psycopg2-2.7.3.2
Bradleys-Mini: ~ BradleyPatton $

Na importovanie balíka Psycopg2 do svojej aplikácie v jazyku Python použite nasledujúci riadok kódu.

import psycopg2

Aby som získal nejaké údaje na načítanie do našej databázy, požičal som si nejaký kód z predchádzajúceho tutoriálu o pandách. Nasledujúci kód vytvorí pandasový dátový rámec s historickými údajmi.  To sa potom využije na vytvorenie tabuľky v tabuľke PostgreSQL.

def get_data (symboly, dátum začiatku, dátum):
panel = údaje.DataReader (symboly, 'yahoo', start_date, end_date)
df = panel ['Zavrieť']]
df.stĺpce = mapa (str.nižší, df.stĺpce)
hd = zoznam (df)
tlač df.hlava ()
tlač hd
návrat df

Teraz nastavím nejaký upratovací kód, ktorý sa použije na spustenie tutoriálu. Tieto dve metódy sa použijú na vyvolanie metód Psycopg2, ktoré vytvoríme.

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

Aby sme sa mohli pripojiť k databáze PostgreSQL, budeme musieť pridať nižšie uvedenú metódu. Try \ Except poskytuje riešenie chýb v prípade, že lokálna databáza nie je spustená alebo sa do databázy odovzdajú nesprávne parametre pripojenia. Metóda connect v knižnici Psycopg2 sa pripája k databáze s parametrami odovzdanými v pripojovacom reťazci. Vaše parametre pre názov db, používateľa a heslo sa môžu líšiť. Ak spojenie z nejakého dôvodu zlyhá, chybové hlásenie sa napíše do konzoly. Táto metóda vráti objekt pripojenia späť na našu metódu volania, kde ho možno použiť na ďalšie operácie s databázou.

def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "heslo =" heslo ""
skúste:
conn = psycopg2.pripojiť (proti)
vytlačiť "Pripojené"
okrem:
tlač „Nemôžem sa pripojiť k databáze“
spiatočná spoj

Po nadviazaní spojenia s databázou PostgreSQL môžeme načítať naše údaje z metódy get_data () do našej databázy. Vďaka programom Psycopg2 a pandy je to veľmi jednoduchý proces.

Prvý riadok definuje metódu, ktorú by pandy mali použiť na pripojenie k databáze na kopírovanie údajového rámca. Poskytnete rovnaké parametre ako váš spôsob pripojenia. Druhý riadok kódu pretrváva DataFrame do databázy PostgreSQL metódou to_sql ().

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

Krátky pohľad do nášho terminálu pgAdmin PostgreSQL ukazuje, že kód úspešne načítal DataFrame do tabuľky „zatvoriť“. Teraz, keď máme do našej databázy načítané nejaké údaje. Na spustenie niektorých dotazov na dáta môžeme použiť psycopg. Nižšie uvedená metóda je konštruovaná tak, aby nadviazala spojenie nadviazané v našej prvej metóde a spustila dopyt v našej databáze PostgreSQL. Aby sme mohli vytvoriť 4 objekty SQL, musíme pridať ďalší príkaz na import.

z importu psycopg2 sql

Na vytváranie dynamických príkazov SQL používa program psycopg formátovanie reťazca na vyplnenie premenných do reťazca pomocou operátorov% s a .

PostrgreSQL rozlišuje veľké a malé písmená. V metóde get_data () sme prinútili naše hlavičky stĺpcov, aby písali malé písmená. Tento pokyn nebol zahrnutý do indexu. Aby sme v dotaze odovzdali hlavičku stĺpca s veľkým „Data“, musíme ju odovzdať PostgreSQL v dvojitých úvodzovkách. Ak to chcete urobiť v reťazci v Pythone, musíte pred dvojitými úvodzovkami poslať únikový znak „\“.

„% S“ v reťazci môžeme nahradiť pomocou nižšie uvedenej syntaxe formátovania reťazca python. Toto nahradí% s našim dátumovým parametrom dt.

Vykonať dotaz SQL, ktorý bol vytvorený. Potom ho musíte odovzdať kurzoru .metóda execute (). Zavolaním na .metódou fetchall () vrátite výsledky dotazu. Po vytlačení na konzolu môžete zobraziť výsledky.

def get_row (dt, conn):
cr = spoj.kurzor ()
dopyt = sql.SQL ("VYBERTE apel z blízka KDE" Dátum "= '% s'"% dt)
kr.vykonať (dopyt)
tlač cr.fetchall ()

Ak chcete spustiť túto funkciu, do metódy tutorial_run () pridáme nasledujúci riadok kódu. Mali by ste získať podobné výsledky ako nižšie.

get_row ("2017-12-29", pripojenie)

V ďalšej metóde použijeme metódy formátu reťazca na odovzdanie viacerých parametrov do nášho dotazu. Tento dopyt bude mať dátum a tri stĺpce. Okrem použitia operátora% s použijeme operátor na spojenie reťazcových premenných do reťazca a ich vloženie do nášho reťazca dotazu. Náš reťazec dopytu teraz používa spojenie nižšie s oddeľovačom „,“ na odovzdanie viacerých názvov stĺpcov do nášho dotazu.

def get_cols (dt, col1, col2, col3, conn):
cr = spoj.kurzor ()
dopyt = sql.SQL ("SELECT od konca KDE" Dátum "= '% s'"% dt).formát (
štvorcový.SQL (',').pripojiť sa ([sql.Identifikátor (col1), sql.Identifikátor (stĺpec 2), sql.Identifikátor (stĺpec 3)]))
kr.vykonať (dopyt)
tlač cr.fetchall ()

Aby som mohol použiť našu novú metódu, pridám nasledujúci riadok k našej metóde tutorial_run (). Mali by ste vidieť výsledky nižšie.

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

Ďalšia metóda, ktorú napíšeme, použije dve nahradenia reťazcov na stiahnutie všetkých údajov v našej tabuľke s výnimkou nášho indexu. Táto metóda nadväzuje na našu predchádzajúcu metódu pridaním druhého znaku zátvorky nahradenia „1“. Tentokrát sú zátvorky očíslované tak, aby boli nahradené v kóde pojmu kód pojmu. Naša nová metóda spája parametre troch stĺpcov s oddeľovačom čiarok. Druhým parametrom v metóde formátu je navyše tabuľková premenná. Reťazec dotazu je potom zostavený nahradením zátvoriek parametrami v metóde formátovania v uvedenom poradí. To je 0 = stĺpce a 1 = názov tabuľky.

def get_tab (table, col1, col2, col3, conn):
cr = spoj.kurzor ()
dopyt = sql.SQL („VYBERTE 0 z 1“).formát (
štvorcový.SQL (',').pripojiť sa ([sql.Identifikátor (col1), sql.Identifikátor (stĺpec 2),
štvorcový.Identifikátor (col3)]), sql.Identifikátor (tabuľka))
kr.vykonať (dopyt)
tlač cr.fetchall ()

Aby som mohol použiť našu novú metódu, pridám nasledujúci riadok k našej metóde tutorial_run (). Mali by ste vidieť výsledky nižšie.

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

V knižnici psycopg je možné preskúmať oveľa viac metód. To by vám malo pomôcť začať s dobrým pochopením funkcií psycopg. Ďalej som na stránkach dokumentácie uviedol ďalšie zdroje, ktoré vám umožnia podrobnejšie preskúmať knižnicu.

Celý kód

import psycopg2
z importu psycopg2 sql
importovať pandas_datareader ako dáta
def get_data (symboly, dátum začiatku, dátum):
panel = údaje.DataReader (symboly, 'yahoo', start_date, end_date)
df = panel ['Zavrieť']]
df.stĺpce = mapa (str.nižší, df.stĺpce)
hd = zoznam (df)
tlač df.hlava ()
tlač hd
návrat df
def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "heslo =" heslo ""
skúste:
conn = psycopg2.pripojiť (proti)
vytlačiť "Pripojené"
okrem:
tlač „Nemôžem sa pripojiť k databáze“
spiatočná spoj
def create_table (tabuľka, 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 ()
dopyt = sql.SQL ("VYBERTE apel z blízka KDE" Dátum "= '% s'"% dt)
kr.vykonať (dopyt)
tlač cr.fetchall ()
def get_cols (dt, col1, col2, col3, conn):
cr = spoj.kurzor ()
dopyt = sql.SQL ("SELECT od konca KDE" Dátum "= '% s'"% dt).formát (
štvorcový.SQL (',').pripojiť sa ([sql.Identifikátor (stĺpec 1),
štvorcový.Identifikátor (stĺpec 2), sql.Identifikátor (stĺpec 3)]))
kr.vykonať (dopyt)
tlač cr.fetchall ()
def get_tab (table, col1, col2, col3, conn):
cr = spoj.kurzor ()
dopyt = sql.SQL („VYBERTE 0 z 1“).formát (
štvorcový.SQL (',').pripojiť sa ([sql.Identifikátor (col1), sql.Identifikátor (stĺpec 2),
štvorcový.Identifikátor (col3)]), sql.Identifikátor (tabuľka))
kr.vykonať (dopyt)
tlač cr.fetchall ()
def tutorial_run ():
conn = connect ()
symboly = ['SPY', 'AAPL', 'GOOG']
df = get_data (symboly, '2006-01-03', '2017-12-31')
create_table ("zavrieť", df)
get_row ("2017-12-29", pripojenie)
get_cols ("2017-12-29", "aapl", "spy", "goog", conn)
get_tab ("close", "aapl", "spy", "goog", conn)
ak __name__ == "__main__":
tutorial_run ()

Referencie

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

Tlačidlo ľavého kliknutia myši nefunguje v systéme Windows 10
Ak používate samostatnú myš s prenosným počítačom alebo stolovým počítačom, ale nefunguje ľavé tlačidlo myši vo Windows 10/8/7 z nejakého dôvodu uvádz...
Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...
Ako zmeniť smer posúvania myši a touchpadu v systéme Windows 10
Myš a TouchpadNielenže uľahčujú výpočty, ale sú aj efektívnejšie a menej časovo náročné. Nemôžeme si predstaviť život bez týchto zariadení, ale je pra...