Psycopg2

Psycopg2 vejledning

Psycopg2 vejledning

Python, PostgreSQL og Psycopg2 tutorial

For at udvikle en applikation ud over et simpelt script er det nødvendigt at fastholde data uden for hukommelsen i en database.  Der er mange mulige valg for en database, men PostgreSQL er en robust open source-platform, der let kan skaleres til produktion.

Python og PostgreSQL kan interfaces for at udvikle kraftfulde applikationer hurtigt.  Psycopg er en PostgreSQL-adapter, der kan bruges til at udnytte PostgreSQL gennem det Python-baserede bibliotek.  Denne vejledning gennemgår installationen af ​​Psycopg2 og nogle Python-koder for at demonstrere dens anvendelse.

Du kan installere Psycopg2 via nedenstående terminal pip-kommando.

$ pip installer psycopg2

Når du installerer, skal du se terminaludgangen nedenfor.

Indsamling af psycopg2
Download af 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.7MB)
100% | ████████████████████████████████ | 1.7MB 397kB / s
Installation af indsamlede pakker: psycopg2
Psycopg2-2 er installeret.7.3.2
Bradleys-Mini: ~ BradleyPatton $

For at importere Psycopg2-pakken til din Python-applikation bruger du nedenstående kodelinje.

importere psycopg2

For at få nogle data til at indlæse i vores database, har jeg lånt noget kode fra en tidligere tutorial om pandaer. Nedenstående kode opretter en pandas DataFrame med historiske data.  Dette vil derefter blive udnyttet til at oprette en tabel i PostgreSQL-tabellen.

def get_data (symboler, startdato, slutdato):
panel = data.DataReader (symboler, 'yahoo', startdato, slutdato)
df = panel ['Luk']
df.kolonner = kort (str.lavere, df.kolonner)
hd = liste (df)
udskriv df.hoved()
udskriv hd
returner df

Jeg vil nu oprette nogle husholdningskoder, der bruges til at køre vejledningen. Disse to metoder vil blive brugt til at kalde de Psycopg2-metoder, som vi opretter.

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

For at oprette forbindelse til PostgreSQL-databasen skal vi tilføje nedenstående metode. Try \ Except giver en vis fejlhåndtering, hvis den lokale database ikke kører, eller hvis forkerte forbindelsesparametre videregives til databasen. Forbindelsesmetoden i Psycopg2-biblioteket opretter forbindelse til databasen med de parametre, der er sendt i forbindelsesstrengen. Dine parametre for dbnavn, bruger og adgangskode kan variere. Hvis forbindelsen mislykkes af en eller anden grund, skrives fejlmeddelelsen til konsollen. Denne metode returnerer forbindelsesobjektet til vores opkaldsmetode, hvor det kan bruges til yderligere databasehandlinger.

def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
prøve:
conn = psycopg2.forbinde (ulemper)
udskriv "Forbundet"
undtagen:
udskrive "Jeg kan ikke oprette forbindelse til databasen"
returforbindelse

Når vi har oprettet forbindelsen til PostgreSQL-databasen, kan vi indlæse vores data fra get_data () -metoden i vores database. Psycopg2 og pandaer gør dette til en meget enkel proces.

Den første linje definerer den metode, som pandaer skal bruge til at oprette forbindelse til databasen for at kopiere DataFrame. Du giver de samme parametre som din forbindelsesmetode. Den anden linje kode fortsætter DataFrame til PostgreSQL-databasen med metoden to_sql ().

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

Et hurtigt kig i vores PostgreSQL pgAdmin terminal viser, at koden med succes indlæste DataFrame i tabellen "luk". Nu hvor vi har indlæst nogle data i vores database. Vi kan bruge psycopg til at køre nogle forespørgsler på dataene. Nedenstående metode er konstrueret til at tage forbindelsen etableret i vores første metode og køre en forespørgsel på vores PostgreSQL-database. For at oprette de 4 SQL-objekter skal vi tilføje endnu en importerklæring.

fra psycopg2 import sql

For at oprette dynamiske SQL-kommandoer bruger psycopg strengformatering til at udfylde variabler i strengen ved hjælp af operatorerne% s og .

PostrgreSQL er store og små bogstaver. I metoden get_data () tvang vi vores kolonneoverskrifter til små bogstaver. Indekset var ikke inkluderet i denne instruktion. For at overføre hovedstaden "Data" kolonneoverskrift i forespørgslen skal vi sende den til PostgreSQL i dobbelt anførselstegn. For at gøre dette i en streng i Python skal du sende flugttegnet “\” før de dobbelte anførselstegn.

Vi kan erstatte “% s” i strengen ved hjælp af syntaks for formatering af pythonstreng nedenfor. Dette erstatter% s med vores datoparameter dt.

At udføre den SQL-forespørgsel, der blev oprettet. Du skal derefter sende det til markørens .execute () metode. Ved at ringe til .fetchall () metode, returnerer du resultaterne af forespørgslen. Når du udskriver på konsollen, kan du få vist resultaterne.

def get_row (dt, conn):
cr = tilslutning.cursoren()
forespørgsel = sql.SQL ("SELECT aapl from close WHERE" Date "= '% s'"% dt)
cr.udføre (forespørgsel)
print cr.fetchall ()

For at køre denne funktion tilføjer vi nedenstående kodelinje til tutorial_run () -metoden. Du skal få lignende resultater til nedenstående.

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

I den næste metode bruger vi strengformatmetoderne til at overføre flere parametre til vores forespørgsel. Denne forespørgsel tager en dato og tre kolonner. Ud over at bruge% s-operatoren bruger vi -operatøren til at forbinde strengvariabler i en streng og indsprøjte dem i vores forespørgselsstreng. Vores forespørgselsstreng bruger nu sammenføjningen nedenfor med en "," separator til at sende flere kolonnenavne til vores forespørgsel.

def get_cols (dt, col1, col2, col3, conn):
cr = tilslutning.cursoren()
forespørgsel = sql.SQL ("SELECT fra tæt WHERE" Date "= '% s'"% dt).format(
kvm.SQL (',').join ([sql.Identifikator (col1), kvl.Identifikator (col2), kvl.Identifikator (col3)]))
cr.udføre (forespørgsel)
print cr.fetchall ()

For at bruge vores nye metode vil jeg tilføje nedenstående linje til vores tutorial_run () metode. Du skal se resultaterne nedenfor.

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

Den næste metode, vi skriver, bruger to strengudskiftninger til at trække alle dataene i vores tabel med undtagelse af vores indeks. Denne metode bygger på vores tidligere metode ved at tilføje en anden erstatningsbeslagsnotation "1". Denne gang er parenteserne nummereret, så de erstattes i ordreformatkoden. Vores nye metode forbinder de tre kolonneparametre med komma-separator. Derudover er tabelvariablen den anden parameter i formatmetoden. Forespørgselsstrengen konstrueres derefter ved at erstatte parenteserne med parametrene i formatmetoden i rækkefølge. Det er 0 = kolonner og 1 = tabelnavn.

def get_tab (tabel, col1, col2, col3, conn):
cr = tilslutning.cursoren()
forespørgsel = sql.SQL ("VÆLG 0 fra 1").format(
kvm.SQL (',').join ([sql.Identifikator (col1), kvl.Identifikator (col2),
kvm.Identifikator (col3)]), kvl.Identifikator (tabel)
cr.udføre (forespørgsel)
print cr.fetchall ()

For at bruge vores nye metode vil jeg tilføje nedenstående linje til vores tutorial_run () metode. Du skal se resultaterne nedenfor.

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

Der er mange flere metoder til at udforske i psycopg-biblioteket. Dette skulle komme i gang med en god forståelse af psycopg-funktioner. Jeg har givet nogle flere ressourcer nedenfor på dokumentationssider, der giver dig mulighed for at udforske biblioteket mere omfattende.

Fuld kode

importere psycopg2
fra psycopg2 import sql
importer pandas_datareader som data
def get_data (symboler, startdato, slutdato):
panel = data.DataReader (symboler, 'yahoo', startdato, slutdato)
df = panel ['Luk']
df.kolonner = kort (str.lavere, df.kolonner)
hd = liste (df)
udskriv df.hoved()
udskriv hd
returner df
def connect ():
cons = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
prøve:
conn = psycopg2.forbinde (ulemper)
udskriv "Forbundet"
undtagen:
udskrive "Jeg kan ikke oprette forbindelse til databasen"
returforbindelse
def create_table (tabel, df):
engine = create_engine ('postgresql + psycopg2: // postgres: [email protected]: 5432 / tutorial')
df.to_sql (tabel, motor, if_exists = "udskift")
def get_row (dt, conn):
cr = tilslutning.cursoren()
forespørgsel = sql.SQL ("SELECT aapl from close WHERE" Date "= '% s'"% dt)
cr.udføre (forespørgsel)
print cr.fetchall ()
def get_cols (dt, col1, col2, col3, conn):
cr = tilslutning.cursoren()
forespørgsel = sql.SQL ("SELECT fra tæt WHERE" Date "= '% s'"% dt).format(
kvm.SQL (',').join ([sql.Identifikator (col1),
kvm.Identifikator (col2), kvl.Identifikator (col3)]))
cr.udføre (forespørgsel)
print cr.fetchall ()
def get_tab (tabel, col1, col2, col3, conn):
cr = tilslutning.cursoren()
forespørgsel = sql.SQL ("VÆLG 0 fra 1").format(
kvm.SQL (',').join ([sql.Identifikator (col1), kvl.Identifikator (col2),
kvm.Identifikator (col3)]), kvl.Identifikator (tabel)
cr.udføre (forespørgsel)
print cr.fetchall ()
def tutorial_run ():
tilslut = tilslut ()
symboler = ['SPY', 'AAPL', 'GOOG']
df = get_data (symboler, '2006-01-03', '2017-12-31')
create_table ("close", df)
get_row ("2017-12-29", konn)
get_cols ("2017-12-29", "aapl", "spy", "goog", conn)
get_tab ("close", "aapl", "spy", "goog", conn)
hvis __name__ == "__main__":
tutorial_run ()

Referencer

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

Mus Markøren hopper eller bevæger sig tilfældigt, mens han skriver i Windows 10
Markøren hopper eller bevæger sig tilfældigt, mens han skriver i Windows 10
Hvis du finder ud af, at din musemarkør hopper eller bevæger sig alene, automatisk tilfældigt, mens du skriver Windows-bærbar computer eller computer,...
Mus Sådan vender du musens og touchpadsens rulle retning i Windows 10
Sådan vender du musens og touchpadsens rulle retning i Windows 10
Mus og Touchpads gør ikke kun computing let, men mere effektiv og mindre tidskrævende. Vi kan ikke forestille os et liv uden disse enheder, men det er...
Mus Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Sådan ændres musemarkør og markørstørrelse, farve og skema på Windows 10
Musemarkøren og markøren i Windows 10 er meget vigtige aspekter af operativsystemet. Dette kan også siges om andre operativsystemer, så i sandhed er d...