Psycopg2

Psycopg2 apmācība

Psycopg2 apmācība

Python, PostgreSQL un Psycopg2 apmācība

Lai izstrādātu lietojumprogrammu, kas pārsniedz vienkāršu skriptu, ir nepieciešams datus ārpus atmiņas saglabāt datu bāzē.  Datu bāzei ir daudz iespēju, taču PostgreSQL ir spēcīga atvērtā koda platforma, kuru var viegli pielāgot ražošanai.

Python un PostgreSQL var būt saskarnes, lai ātri izstrādātu jaudīgas lietojumprogrammas.  Psycopg ir PostgreSQL adapteris, ko var izmantot, lai izmantotu PostgreSQL caur Python balstītu bibliotēku.  Šī apmācība iepazīstinās ar Psycopg2 un dažu Python kodu instalēšanu, lai parādītu tā lietošanu.

Jūs varat instalēt Psycopg2, izmantojot zemāk esošo komandu terminal pip.

$ pip instalējiet psycopg2

Instalējot, jums vajadzētu redzēt termināla izeju zemāk.

Psycopg2 savākšana
Lejupielādējot 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
Savākto pakotņu instalēšana: psycopg2
Veiksmīgi instalēta psycopg2-2.7.3.2
Bradley-Mini: ~ BradleyPatton $

Lai importētu Psycopg2 pakotni savā Python lietojumprogrammā, izmantojiet zemāk esošo koda rindu.

importēt psycopg2

Lai iegūtu dažus datus, lai tos ielādētu mūsu datubāzē, esmu aizņēmies kodu no iepriekšējas pandu apmācības. Šis kods izveidos pandas DataFrame ar vēsturiskiem datiem.  Pēc tam tas tiks izmantots, lai izveidotu tabulu PostgreSQL tabulā.

def get_data (simboli, sākuma_datums, beigu_datums):
panelis = dati.DataReader (simboli, 'yahoo', sākuma_datums, beigu_datums)
df = panelis ['Aizvērt']
df.kolonnas = karte (str.zemāks, df.kolonnas)
hd = saraksts (df)
drukāt df.galva ()
drukāt hd
atgriešanās df

Tagad es iestatīšu dažus mājturības kodus, ko izmanto apmācības palaišanai. Šīs divas metodes tiks izmantotas, lai izsauktu mūsu izveidotās metodes Psycopg2.

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

Lai izveidotu savienojumu ar PostgreSQL datu bāzi, mums būs jāpievieno šī metode. Izmēģinājums \ Izņemot nodrošina kļūdu apstrādi gadījumā, ja vietējā datu bāze nedarbojas vai datu bāzei tiek nodoti nepareizi savienojuma parametri. Savienojuma metode Psycopg2 bibliotēkā savienojas ar datu bāzi ar parametriem, kas nodoti savienojuma virknē. Jūsu parametri dbname, lietotājam un parolei var atšķirties. Ja savienojums kāda iemesla dēļ neizdodas, kļūdas ziņojums tiks ierakstīts konsolē. Šī metode atgriež savienojuma objektu atpakaļ uz mūsu zvana metodi, kur to var izmantot turpmākajām datu bāzes darbībām.

def savienot ():
mīnusi = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
mēģiniet:
savienojums = psycopg2.savienot (mīnusus)
drukāt "Savienots"
izņemot:
print "Nevar izveidot savienojumu ar datu bāzi"
atgriešanās savien

Kad esam izveidojuši savienojumu ar PostgreSQL datu bāzi, datus no get_data () metodes varam ielādēt mūsu datu bāzē. Psycopg2 un pandas padara šo procesu par ļoti vienkāršu.

Pirmajā rindā ir definēta metode, kas pandām jāizmanto, lai izveidotu savienojumu ar datu bāzi, lai kopētu DataFrame. Jūs norādīsit tos pašus parametrus kā savienojuma metode. Otra koda rindiņa saglabā DataFrame uz PostgreSQL datu bāzi ar to_sql () metodi.

def create_table (tabula, df):
dzinējs = create_engine ('postgresql + psycopg2: // postgres: [aizsargāts ar e-pastu]: 5432 / apmācība')
df.to_sql (tabula, dzinējs, if_exists = 'aizstāt')

Īss ieskats mūsu PostgreSQL pgAdmin terminālā parāda, ka kods veiksmīgi ielādēja DataFrame tabulā “aizvērt”. Tagad, kad mūsu datu bāzē ir ielādēti daži dati. Mēs varam izmantot psycopg, lai izpildītu dažus vaicājumus par datiem. Šī metode ir izveidota, lai ņemtu savienojumu, kas izveidots ar mūsu pirmo metodi, un izpildītu vaicājumu mūsu PostgreSQL datu bāzē. Lai izveidotu 4 SQL objektus, mums jāpievieno vēl viens importēšanas paziņojums.

no psycopg2 importa kv

Lai izveidotu dinamiskas SQL komandas, psycopg izmanto virknes formatējumu, lai mainīgos mainītu virknē, izmantojot operatorus% s un .

PostrgreSQL ir reģistrjutīgs. Metodā get_data () mēs piespiedām kolonnu galvenes izmantot mazos burtus. Indekss šajā instrukcijā netika iekļauts. Lai vaicājumā nodotu lielo kolonnu “Data” galveni, mums tas divkāršās pēdiņās jānodod PostgreSQL. Lai to izdarītu virknē Python, pirms divkāršās pēdiņas jums jānosūta aizbēgšanas raksturs “\”.

Mēs varam aizstāt virkni “% s”, izmantojot zemāk esošo pitona virknes formatēšanas sintaksi. Tas aizstāj% s ar mūsu datuma parametru dt.

Lai izpildītu izveidoto SQL vaicājumu. Pēc tam jums tas jānodod kursoram .izpildīt () metodi. Zvanot uz .fetchall () metodi, jūs atgriežat vaicājuma rezultātus. Drukājot konsolē, jūs varat parādīt rezultātus.

def get_row (dt, savienojums):
cr = savienojums.kursors ()
vaicājums = sql.SQL ("SELECT aapl from close WHERE" Date "= '% s'"% dt)
kr.izpildīt (vaicājums)
drukāt kr.atnest ()

Lai palaistu šo funkciju, metodei tutorial_run () pievienojam zemāk redzamo koda rindu. Jums vajadzētu iegūt līdzīgus rezultātus kā zemāk.

get_row ("2017-12-29", savienotājs)

Nākamajā metodē mēs izmantosim virkņu formāta metodes, lai mūsu vaicājumā pārsūtītu vairākus parametrus. Šim vaicājumam būs datums un trīs kolonnas. Papildus% s operatora izmantošanai mēs izmantosim operatoru , lai virknes mainīgos pievienotu virknei un ievadītu tos vaicājuma virknē. Tagad mūsu vaicājuma virknē tiek izmantots zemāk esošais savienojums ar atdalītāju “,” lai vairāku kolonnu nosaukumus nosūtītu vaicājumam.

def get_cols (dt, col1, col2, col3, savienojums):
cr = savienojums.kursors ()
vaicājums = sql.SQL ("SELECT no aizvēršanas WHERE" Date "= '% s'"% dt).formāts (
kvl.SQL (',').pievienoties ([sql.Identifier (col1), kvl.Identifier (col2), kvl.Identifikators (kol3)]))
kr.izpildīt (vaicājums)
drukāt kr.atnest ()

Lai izmantotu mūsu jauno metodi, es pievienošu zemāk redzamo rindiņu mūsu metodei tutorial_run (). Jums vajadzētu redzēt rezultātus zemāk.

get_cols ("2017-12-29", "aapl", "spiegs", "goog", savienotājs)

Nākamajā rakstāmajā metodē tiks izmantoti divi virkņu aizstājēji, lai izvilktu visus tabulas datus, izņemot mūsu indeksu. Šī metode balstās uz mūsu iepriekšējo metodi, pievienojot otru aizstājošā iekavas apzīmējumu “1”. Šoreiz iekavas ir numurētas tā, lai tās aizstātu pasūtījuma formāta jēdziena kodā. Mūsu jaunā metode apvieno trīs kolonnu parametrus ar komatu atdalītāju. Turklāt formāta metodes otrais parametrs ir tabulas mainīgais. Pēc tam tiek izveidota vaicājuma virkne, secībā aizstājot iekavas ar parametriem formāta metodē. Tas ir 0 = kolonnas un 1 = tabulas nosaukums.

def get_tab (tabula, col1, col2, col3, savienojums):
cr = savienojums.kursors ()
vaicājums = sql.SQL ("SELECT 0 no 1").formāts (
kvl.SQL (',').pievienoties ([sql.Identifier (col1), kvl.Identifikators (col2),
kvl.Identifier (col3)]), kvl.Identifikators (tabula))
kr.izpildīt (vaicājums)
drukāt kr.atnest ()

Lai izmantotu mūsu jauno metodi, es pievienošu zemāk redzamo rindiņu mūsu metodei tutorial_run (). Jums vajadzētu redzēt rezultātus zemāk.

get_tab ("aizvērt", "aapl", "spiegot", "goog", savienotājs)

Psycopg bibliotēkā ir daudz citu pētījumu iespēju. Tam vajadzētu sākt ar labu izpratni par psycopg funkcijām. Tālāk dokumentācijas lapās esmu sniedzis vēl dažus resursus, kas ļaus jums plašāk izpētīt bibliotēku.

Pilns kods

importēt psycopg2
no psycopg2 importa kv
importēt pandas_datareader kā datus
def get_data (simboli, sākuma_datums, beigu_datums):
panelis = dati.DataReader (simboli, 'yahoo', sākuma_datums, beigu_datums)
df = panelis ['Aizvērt']
df.kolonnas = karte (str.zemāks, df.kolonnas)
hd = saraksts (df)
drukāt df.galva ()
drukāt hd
atgriešanās df
def savienot ():
mīnusi = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
mēģiniet:
savienojums = psycopg2.savienot (mīnusus)
drukāt "Savienots"
izņemot:
print "Nevar izveidot savienojumu ar datu bāzi"
atgriešanās savien
def create_table (tabula, df):
dzinējs = create_engine ('postgresql + psycopg2: // postgres: [aizsargāts ar e-pastu]: 5432 / apmācība')
df.to_sql (tabula, dzinējs, if_exists = "aizstāt")
def get_row (dt, savienojums):
cr = savienojums.kursors ()
vaicājums = sql.SQL ("SELECT aapl from close WHERE" Date "= '% s'"% dt)
kr.izpildīt (vaicājums)
drukāt kr.atnest ()
def get_cols (dt, col1, col2, col3, savienojums):
cr = savienojums.kursors ()
vaicājums = sql.SQL ("SELECT no aizvēršanas WHERE" Date "= '% s'"% dt).formāts (
kvl.SQL (',').pievienoties ([sql.Identifikators (col1),
kvl.Identifier (col2), kvl.Identifikators (kol3)]))
kr.izpildīt (vaicājums)
drukāt kr.atnest ()
def get_tab (tabula, col1, col2, col3, savienojums):
cr = savienojums.kursors ()
vaicājums = sql.SQL ("SELECT 0 no 1").formāts (
kvl.SQL (',').pievienoties ([sql.Identifier (col1), kvl.Identifikators (col2),
kvl.Identifier (col3)]), kvl.Identifikators (tabula))
kr.izpildīt (vaicājums)
drukāt kr.atnest ()
def tutorial_run ():
savienot = savienot ()
simboli = ['SPY', 'AAPL', 'GOOG']
df = get_data (simboli, '2006-01-03', '2017-12-31')
create_table ("aizvērt", df)
get_row ("2017-12-29", savienotājs)
get_cols ("2017-12-29", "aapl", "spiegs", "goog", savienotājs)
get_tab ("aizvērt", "aapl", "spiegot", "goog", savienotājs)
ja __nosaukums == "__main__":
tutorial_run ()

Atsauces

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

Labākās spēles, ko spēlēt ar rokas izsekošanu
Oculus Quest nesen iepazīstināja ar lielisku ideju par rokas izsekošanu bez kontrolieriem. Ar arvien lielāku spēļu un aktivitāšu skaitu, kas atbalsta ...
Kā parādīt OSD pārklājumu pilnekrāna Linux lietotnēs un spēlēs
Spēlējot pilnekrāna spēles vai lietojot lietotnes bez atrautības pilnekrāna režīmā, jūs varat izslēgt no attiecīgās sistēmas informācijas, kas redzama...
Top 5 spēļu tveršanas kartes
Mēs visi esam redzējuši un mīlējuši straumēšanas spēles pakalpojumā YouTube. PewDiePie, Jakesepticye un Markiplier ir tikai daži no labākajiem spēlētā...