Psycopg2

Vadnica za Psycopg2

Vadnica za Psycopg2

Vadnice za Python, PostgreSQL in Psycopg2

Če želite razviti aplikacijo, ki presega preprost skript, je treba podatke izven pomnilnika ohraniti v zbirki podatkov.  Za bazo podatkov obstaja veliko možnih možnosti, vendar je PostgreSQL zanesljiva odprtokodna platforma, ki jo je mogoče enostavno prilagoditi produkciji.

Python in PostgreSQL je mogoče povezati za hiter razvoj zmogljivih aplikacij.  Psycopg je vmesnik PostgreSQL, ki ga lahko uporabimo za izkoriščanje PostgreSQL prek knjižnice, ki temelji na Pythonu.  Ta vadnica vam bo predstavila namestitev Psycopg2 in nekaj kode Python, da bo prikazala njegovo uporabo.

Psycopg2 lahko namestite prek spodnjega ukaza pip terminala.

$ pip namestite psycopg2

Pri namestitvi bi morali videti spodnji izhod terminala.

Zbiranje psycopg2
Prenos 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
Namestitev zbranih paketov: psycopg2
Uspešno nameščen psycopg2-2.7.3.2
Bradleys-Mini: ~ BradleyPatton $

Za uvoz paketa Psycopg2 v aplikacijo Python uporabite spodnjo vrstico kode.

uvozi psycopg2

Da bi nekaj podatkov naložil v našo bazo podatkov, sem si sposodil nekaj kode iz prejšnje vadnice o pandah. Spodnja koda bo ustvarila pandas DataFrame z zgodovinskimi podatki.  To bo nato uporabljeno za ustvarjanje tabele v tabeli PostgreSQL.

def get_data (simboli, datum začetka, datum konca):
panel = podatki.DataReader (simboli, 'yahoo', start_date, end_date)
df = panel ['Zapri']
df.stolpci = zemljevid (str.nižje, df.stolpci)
hd = seznam (df)
natisni df.glava ()
natisni hd
vrni df

Zdaj bom nastavil nekaj kode za gospodinjstvo, ki se uporablja za izvajanje vadnice. Ti dve metodi bomo uporabili za klic metod Psycopg2, ki jih ustvarimo.

def tutorial_run ():
simboli = ['SPY', 'AAPL', 'GOOG']
df = get_data (simboli, '03.01.2006', '2017-12-31')
če je __name__ == "__glavna__":
tutorial_run ()

Če se želimo povezati z bazo podatkov PostgreSQL, bomo morali dodati spodnjo metodo. Poskusite \ Razen nudi nekaj ravnanja z napakami, če se lokalna baza podatkov ne izvaja ali se v bazo prenesejo napačni parametri povezave. Način povezovanja v knjižnici Psycopg2 se poveže z bazo podatkov s parametri, posredovanimi v nizu povezave. Vaši parametri za dbname, uporabnika in geslo se lahko razlikujejo. Če povezava iz nekega razloga ne uspe, se sporočilo o napaki zapiše v konzolo. Ta metoda vrne objekt povezave nazaj k naši klicni metodi, kjer se lahko uporablja za nadaljnje operacije baze podatkov.

def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
poskusite:
conn = psycopg2.povezati (slabosti)
natisni "Povezano"
razen:
natisni "Ne morem se povezati z bazo podatkov"
vrn

Ko vzpostavimo povezavo z bazo podatkov PostgreSQL, lahko podatke iz metode get_data () naložimo v našo bazo podatkov. Psycopg2 in pande naredijo to zelo preprost postopek.

V prvi vrstici je opredeljena metoda, ki bi jo pande morale uporabiti za povezavo z bazo podatkov za kopiranje podatkovnega okvira. Navedli boste enake parametre kot način povezave. V drugi vrstici kode DataFrame ostane v zbirki podatkov PostgreSQL z metodo to_sql ().

def create_table (tabela, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [email protected]: 5432 / tutorial')
df.do_sql (tabela, motor, če_postoji = 'zamenjaj')

Hiter pogled v naš terminal PostgreSQL pgAdmin kaže, da je koda DataFrame uspešno naložila v tabelo "close". Zdaj, ko imamo nekaj podatkov naloženih v našo bazo podatkov. Psycopg lahko uporabimo za izvajanje nekaterih poizvedb po podatkih. Spodnja metoda je zasnovana tako, da vzame povezavo, vzpostavljeno v naši prvi metodi, in zažene poizvedbo v naši bazi podatkov PostgreSQL. Če želimo ustvariti 4 objekte SQL, moramo dodati še en stavek o uvozu.

iz psycopg2 import sql

Da bi ustvaril dinamične ukaze SQL, psycopg s pomočjo oblikovanja nizov zapolni spremenljivke v niz z uporabo operatorjev% s in .

PostrgreSQL razlikuje med velikimi in malimi črkami. V metodi get_data () smo glave stolpcev prisilili v male črke. Indeks ni bil vključen v to navodilo. Če želimo v poizvedbi prenesti glavo stolpca z velikimi podatki, ga moramo v dvojne narekovaje posredovati PostgreSQL. Če želite to narediti v nizu v Pythonu, morate pred dvojnimi narekovaji poslati ubežni znak "\".

""% S"" v nizu lahko nadomestimo s spodnjo sintakso formatiranja nizov python. To nadomesti% s z našim datumskim parametrom dt.

Za izvedbo poizvedbe SQL, ki je bila ustvarjena. Nato ga morate predati kazalcu .metoda execute (). S klicem na .fetchall (), vrnete rezultate poizvedbe. Ko jih natisnete na konzolo, lahko prikažete rezultate.

def get_row (dt, conn):
cr = prik.kazalec ()
poizvedba = sql.SQL (""SELECT aapl from close WHERE"" Date ""= '% s'""% dt)
kr.izvrši (poizvedba)
natisni cr.prinesi ()

Za zagon te funkcije metodi tutorial_run () dodamo spodnjo vrstico kode. Dobili bi podobne rezultate kot spodaj.

get_row (""29.12.2017"", povezava)

V naslednji metodi bomo uporabili metode oblikovanja niza za posredovanje več parametrov v našo poizvedbo. Ta poizvedba bo imela datum in tri stolpce. Poleg uporabe operaterja% s bomo z operatorjem združili spremenljivke niza v niz in jih vbrizgali v naš niz poizvedbe. Naš poizvedbeni niz zdaj uporablja združitev spodaj z ločilom »,« za posredovanje več imen stolpcev v našo poizvedbo.

def get_cols (dt, col1, col2, col3, conn):
cr = prik.kazalec ()
poizvedba = sql.SQL (""SELECT od blizu WHERE"" Date ""= '% s'""% dt).format (
sql.SQL (',').pridružiti ([sql.Identifikator (col1), sql.Identifikator (col2), sql.Identifikator (col3)]))
kr.izvrši (poizvedba)
natisni cr.prinesi ()

Da bi uporabil našo novo metodo, bom metodi tutorial_run () dodal spodnjo vrstico. Rezultati bi morali videti spodaj.

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

Naslednja metoda, ki jo napišemo, bo uporabila dve nadomestitvi nizov, da povlečemo vse podatke v tabeli, razen indeksa. Ta metoda nadgrajuje našo prejšnjo metodo z dodajanjem drugega zapisa nadomestnega oklepaja »1«. Tokrat so oklepaji oštevilčeni, tako da so nadomeščeni v pojmu pojma oblike naročila. Naša nova metoda združi parametre treh stolpcev z ločilom vejic. Poleg tega je drugi parameter metode oblikovanja spremenljivka tabele. Nato se poizvedbeni niz oblikuje tako, da se oklepaje nadomeščajo s parametri v načinu formatiranja. To je 0 = stolpci in 1 = ime tabele.

def get_tab (tabela, col1, col2, col3, conn):
cr = prik.kazalec ()
poizvedba = sql.SQL (""IZBERI 0 od 1"").format (
sql.SQL (',').pridružiti ([sql.Identifikator (col1), sql.Identifikator (col2),
sql.Identifikator (col3)]), sql.Identifikator (tabela))
kr.izvrši (poizvedba)
natisni cr.prinesi ()

Da bi uporabil našo novo metodo, bom metodi tutorial_run () dodal spodnjo vrstico. Rezultati bi morali videti spodaj.

get_tab (""zapri"", ""aapl"", ""vohun"", ""goog"", conn)

V knjižnici psycopg je še veliko metod za raziskovanje. S tem bi morali začeti z dobrim razumevanjem funkcij psycopg. Spodaj sem navedel nekaj dodatnih virov na straneh z dokumentacijo, ki vam bodo omogočile bolj obsežno raziskovanje knjižnice.

Celotna koda

uvozi psycopg2
iz psycopg2 import sql
uvozi pandas_datareader kot podatke
def get_data (simboli, datum začetka, datum konca):
panel = podatki.DataReader (simboli, 'yahoo', start_date, end_date)
df = panel ['Zapri']
df.stolpci = zemljevid (str.nižje, df.stolpci)
hd = seznam (df)
natisni df.glava ()
natisni hd
vrni df
def connect ():
cons = ""dbname = 'tutorial' user ="" postgres ""host ="" localhost ""password ="" password """"
poskusite:
conn = psycopg2.povezati (slabosti)
natisni ""Povezano""
razen:
natisni ""Ne morem se povezati z bazo podatkov""
vrn
def create_table (tabela, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [email protected]: 5432 / tutorial')
df.do_sql (tabela, mehanizem, če obstaja = ""zamenjaj"")
def get_row (dt, conn):
cr = prik.kazalec ()
poizvedba = sql.SQL (""SELECT aapl from close WHERE"" Date ""= '% s'""% dt)
kr.izvrši (poizvedba)
natisni cr.prinesi ()
def get_cols (dt, col1, col2, col3, conn):
cr = prik.kazalec ()
poizvedba = sql.SQL (""SELECT od blizu WHERE"" Date ""= '% s'""% dt).format (
sql.SQL (',').pridružiti ([sql.Identifikator (col1),
sql.Identifikator (col2), sql.Identifikator (col3)]))
kr.izvrši (poizvedba)
natisni cr.prinesi ()
def get_tab (tabela, col1, col2, col3, conn):
cr = prik.kazalec ()
poizvedba = sql.SQL (""IZBERI 0 od 1"").format (
sql.SQL (',').pridružiti ([sql.Identifikator (col1), sql.Identifikator (col2),
sql.Identifikator (col3)]), sql.Identifikator (tabela))
kr.izvrši (poizvedba)
natisni cr.prinesi ()
def tutorial_run ():
conn = poveži ()
simboli = ['SPY', 'AAPL', 'GOOG']
df = get_data (simboli, '03.01.2006', '2017-12-31')
create_table (""zapri"", df)
get_row (""29. 12. 2017"", povezava)
get_cols (""2017-12-29"", ""aapl"", ""vohun"", ""goog"", conn)
get_tab (""zapri"", ""aapl"", ""vohun"", ""goog"", conn)
če je __name__ == ""__glavna__"":
tutorial_run ()

Reference

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

Srednji gumb miške ne deluje v sistemu Windows 10
The srednji gumb miške vam pomaga, da se pomikate po dolgih spletnih straneh in zaslonih z veliko podatkov. Če se to ustavi, boste na koncu uporabili ...
Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...