Psycopg2

Vodič za Psycopg2

Vodič za Psycopg2

Vodič za Python, PostgreSQL i Psycopg2

Da biste razvili aplikaciju izvan jednostavne skripte, potrebno je podatke izvan memorije sačuvati u bazi podataka.  Postoji mnogo mogućih izbora za bazu podataka, ali PostgreSQL je robusna platforma otvorenog koda koja se lako može prilagoditi proizvodnji.

Python i PostgreSQL mogu se povezati za brzi razvoj moćnih aplikacija.  Psycopg je PostgreSQL adapter koji se može koristiti za iskorištavanje PostgreSQL-a kroz Python knjižnicu.  Ovaj vodič će proći kroz instalaciju Psycopg2 i nekog Python koda kako bi demonstrirao njegovu upotrebu.

Psycopg2 možete instalirati putem donje naredbe pip terminala.

$ pip instalirajte psycopg2

Prilikom instalacije trebali biste vidjeti izlaz terminala u nastavku.

Prikupljanje psycopg2
Preuzimanje 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
Instaliranje prikupljenih paketa: psycopg2
Uspješno instaliran psycopg2-2.7.3.2
Bradleys-Mini: ~ BradleyPatton $

Da biste uvezli paket Psycopg2 u svoju aplikaciju Python, koristite donji redak koda.

uvoz psycopg2

Da bih neke podatke učitao u našu bazu podataka, posudio sam kôd iz prethodnog vodiča o pandama. Kôd u nastavku stvorit će pandas DataFrame s povijesnim podacima.  To će se zatim iskoristiti za stvaranje tablice u tablici PostgreSQL.

def get_data (simboli, datum_početka, datum_konca):
ploča = podaci.DataReader (simboli, 'yahoo', start_date, end_date)
df = ploča ['Zatvori']
df.stupci = karta (str.donji, df.stupci)
hd = popis (df)
ispis df.glava ()
ispis hd
povratak df

Sada ću postaviti neki kod za održavanje koji se koristi za pokretanje vodiča. Ove dvije metode koristit će se za pozivanje Psycopg2 metoda koje kreiramo.

def tutorial_run ():
simboli = ['ŠPIJUNIRANJE', 'AAPL', 'GOOG']
df = get_data (simboli, '03.01.2006', '31.12.2017')
ako je __name__ == "__glavno__":
tutorial_run ()

Da bismo se povezali s bazom podataka PostgreSQL, morat ćemo dodati donju metodu. Try \ Except pruža neko rukovanje pogreškama u slučaju da lokalna baza podataka nije pokrenuta ili se u bazu podataka prosljede netočni parametri veze. Način povezivanja u knjižnici Psycopg2 povezuje se s bazom podataka s parametrima prosljeđenim u nizu veze. Vaši parametri za dbname, korisnika i lozinku mogu se razlikovati. Ako veza iz nekog razloga ne uspije, poruka o pogrešci bit će zapisana na konzolu. Ova metoda vraća objekt veze natrag na našu metodu poziva gdje se može koristiti za daljnje operacije baze podataka.

def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
probati:
conn = psycopg2.povezati (kontra)
ispis "Povezano"
osim:
print "Ne mogu se povezati s bazom podataka"
povrat conn

Nakon što uspostavimo vezu s bazom podataka PostgreSQL, možemo podatke iz metode get_data () učitati u našu bazu podataka. Psycopg2 i pande čine ovo vrlo jednostavnim postupkom.

Prvi redak definira metodu koju bi pande trebale koristiti za povezivanje s bazom podataka kako bi kopirale DataFrame. Navest ćete iste parametre kao i vaš način povezivanja. Drugi redak koda nastavlja DataFrame u PostgreSQL bazu podataka metodom to_sql ().

def create_table (tablica, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [zaštićen e-poštom]: 5432 / tutorial')
df.to_sql (tablica, motor, ako_postoji = 'zamijeni')

Kratki uvid u naš PostgreSQL pgAdmin terminal pokazuje da je kod uspješno učitao DataFrame u tablicu "zatvori". Sad kad imamo neke podatke učitane u našu bazu podataka. Psycopg možemo koristiti za pokretanje nekih upita o podacima. Dolje navedena metoda konstruirana je za preuzimanje veze uspostavljene u našoj prvoj metodi i pokretanje upita na našoj bazi podataka PostgreSQL. Da bismo stvorili 4 SQL objekta trebamo dodati još jednu izjavu o uvozu.

iz psycopg2 uvoz sql

Da bi stvorio dinamičke SQL naredbe, psycopg koristi oblikovanje niza za popunjavanje varijabli u niz pomoću operatora% s i .

PostrgreSQL razlikuje velika i mala slova. U metodi get_data () prisilili smo zaglavlja stupaca na mala slova. Indeks nije bio uključen u ove upute. Da bismo u upitu proslijedili veliko zaglavlje stupca "Podaci", moramo ga proslijediti PostgreSQL-u u dvostrukim navodnicima. Da biste to učinili u nizu u Pythonu, prije dvostrukih navodnika morate poslati izlazni znak "\".

Možemo zamijeniti ""% s"" u nizu koristeći donju sintaksu formatiranja python niza. Ovo zamjenjuje% s našim datumskim parametrom dt.

Za izvršavanje SQL upita koji je stvoren. Zatim ga trebate proslijediti pokazivaču .execute () metoda. Pozivanjem .fetchall (), vraćate rezultate upita. Kada se ispisuje na konzolu, možete prikazati rezultate.

def get_row (dt, conn):
cr = spoj.pokazivač ()
upit = sql.SQL (""ODABERI aapl iz blizine WHERE"" Datum ""= '% s'""% dt)
cr.izvršiti (upit)
ispis cr.dohvatiti ()

Da bismo pokrenuli ovu funkciju, dodamo donji redak koda metodi tutorial_run (). Trebali biste dobiti slične rezultate kao u nastavku.

get_row (""29.12.2017"", povezivanje)

U sljedećoj ćemo metodi koristiti metode oblikovanja niza za prosljeđivanje više parametara u naš upit. Ovaj će upit imati datum i tri stupca. Pored upotrebe operatora% s, upotrijebit ćemo i operator za pridruživanje varijabli niza u niz i ubrizgavanje u naš niz upita. Naš niz upita sada koristi pridruženo dolje s separatorom “,” za prosljeđivanje višestrukih imena stupaca u naš upit.

def get_cols (dt, col1, col2, col3, conn):
cr = spoj.pokazivač ()
upit = sql.SQL (""SELECT od zatvaranja WHERE"" Date ""= '% s'""% dt).format(
sql.SQL (',').pridružiti ([sql.Identifikator (col1), sql.Identifikator (col2), sql.Identifikator (col3)]))
cr.izvršiti (upit)
ispis cr.dohvatiti ()

Da bih koristio našu novu metodu, dodat ću donji redak našoj metodi tutorial_run (). Rezultate biste trebali vidjeti u nastavku.

get_cols (""29.12.2017"", ""aapl"", ""špijun"", ""goog"", conn)

Sljedeća metoda koju napišemo koristit će dvije zamjene niza za povlačenje svih podataka u našoj tablici, osim našeg indeksa. Ova se metoda nadovezuje na našu prethodnu metodu dodavanjem drugog zapisa u zamjenskoj zagradi ""1"". Ovaj put zagrade su numerirane tako da se zamjenjuju u kodu pojma formata naloga. Naša nova metoda pridružuje tri parametra stupca pomoću separatora zareza. Uz to, drugi parametar u metodi formatiranja je varijabla tablice. Niz upita zatim se konstruira zamjenom zagrada parametarima u metodi formatiranja redom. To je 0 = stupci i 1 = naziv tablice.

def get_tab (tablica, col1, col2, col3, conn):
cr = spoj.pokazivač ()
upit = sql.SQL (""ODABERI 0 od 1"").format(
sql.SQL (',').pridružiti ([sql.Identifikator (col1), sql.Identifikator (col2),
sql.Identifikator (col3)]), sql.Identifikator (tablica)
cr.izvršiti (upit)
ispis cr.dohvatiti ()

Da bih koristio našu novu metodu, dodat ću donji redak našoj metodi tutorial_run (). Rezultate biste trebali vidjeti u nastavku.

get_tab (""zatvori"", ""aapl"", ""špijun"", ""goog"", conn)

Mnogo je više metoda koje treba istražiti u knjižnici psycopg. Ovo bi trebalo započeti s dobrim razumijevanjem funkcija psycopg-a. U nastavku sam naveo još nekih resursa na stranicama dokumentacije koji će vam omogućiti šire istraživanje knjižnice.

Puni kod

uvoz psycopg2
iz psycopg2 uvoz sql
uvezi pandas_datareader kao podatke
def get_data (simboli, datum_početka, datum_konca):
ploča = podaci.DataReader (simboli, 'yahoo', start_date, end_date)
df = ploča ['Zatvori']
df.stupci = karta (str.donji, df.stupci)
hd = popis (df)
ispis df.glava ()
ispis hd
povratak df
def connect ():
cons = ""dbname = 'tutorial' user ="" postgres ""host ="" localhost ""password ="" password """"
probati:
conn = psycopg2.povezati (kontra)
ispis ""Povezano""
osim:
print ""Ne mogu se povezati s bazom podataka""
povrat conn
def create_table (tablica, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [zaštićen e-poštom]: 5432 / tutorial')
df.to_sql (tablica, motor, ako_postoji = ""zamijeni"")
def get_row (dt, conn):
cr = spoj.pokazivač ()
upit = sql.SQL (""ODABERI aapl iz blizine WHERE"" Datum ""= '% s'""% dt)
cr.izvršiti (upit)
ispis cr.dohvatiti ()
def get_cols (dt, col1, col2, col3, conn):
cr = spoj.pokazivač ()
upit = sql.SQL (""SELECT od zatvaranja WHERE"" Date ""= '% s'""% dt).format(
sql.SQL (',').pridružiti ([sql.Identifikator (col1),
sql.Identifikator (col2), sql.Identifikator (col3)]))
cr.izvršiti (upit)
ispis cr.dohvatiti ()
def get_tab (tablica, col1, col2, col3, conn):
cr = spoj.pokazivač ()
upit = sql.SQL (""ODABERI 0 od 1"").format(
sql.SQL (',').pridružiti ([sql.Identifikator (col1), sql.Identifikator (col2),
sql.Identifikator (col3)]), sql.Identifikator (tablica)
cr.izvršiti (upit)
ispis cr.dohvatiti ()
def tutorial_run ():
conn = connect ()
simboli = ['ŠPIJUNIRANJE', 'AAPL', 'GOOG']
df = get_data (simboli, '03.01.2006', '31.12.2017')
create_table (""zatvori"", df)
get_row (""29.12.2017"", povezivanje)
get_cols (""29.12.2017"", ""aapl"", ""špijun"", ""goog"", conn)
get_tab (""zatvori"", ""aapl"", ""špijun"", ""goog"", conn)
ako je __name__ == ""__glavno__"":
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"

Bitka za Wesnoth 1.13.6 Razvoj objavljen
Bitka za Wesnoth 1.13.6 objavljeno prošlog mjeseca, šesto je razvojno izdanje u izdanju 1.13.x series i donosi niz poboljšanja, ponajviše korisničkog ...
Kako instalirati League Of Legends na Ubuntu 14.04
Ako ste ljubitelj League of Legends, ovo je prilika za vas da testirate League of Legends. Imajte na umu da je LOL podržan na PlayOnLinux ako ste kori...
Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...