Psycopg2

Psycopg2 bemutató

Psycopg2 bemutató

Python, PostgreSQL és Psycopg2 bemutató

Egy egyszerű szkripten túli alkalmazás fejlesztéséhez meg kell tartani a memórián kívüli adatokat egy adatbázisban.  Számos lehetőség van az adatbázisra, de a PostgreSQL egy robusztus nyílt forráskódú platform, amely könnyen méretezhető a gyártásig.

A Python és a PostgreSQL összekapcsolhatók az erőteljes alkalmazások gyors fejlesztéséhez.  A Psycopg egy PostgreSQL adapter, amely felhasználható a PostgreSQL felhasználására a Python alapú könyvtár segítségével.  Ez az oktatóanyag bemutatja a Psycopg2 és néhány Python kód telepítését, hogy bemutassa annak használatát.

A Psycopg2 telepíthető az alábbi terminál pip paranccsal.

$ pip install psycopg2

Telepítéskor az alábbi terminál kimenetet kell látnia.

A psycopg2 gyűjtése
A psycopg2-2 letöltése.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
Az összegyűjtött csomagok telepítése: psycopg2
A psycopg2-2 sikeresen telepítve.7.3.2
Bradleys-Mini: ~ BradleyPatton $

A Psycopg2 csomag importálásához a Python alkalmazásba használja az alábbi kódsort.

import psycopg2

Annak érdekében, hogy az adatok betölthetők legyenek az adatbázisunkba, kölcsönvettem egy kódot egy korábbi, pandákról szóló oktatóanyagból. Az alábbi kód egy pandás DataFrame-et hoz létre történelmi adatokkal.  Ezt felhasználva létrehoz egy táblázatot a PostgreSQL táblában.

def get_data (szimbólumok, start_date, end_date):
panel = adatok.DataReader (szimbólumok, 'yahoo', start_date, end_date)
df = panel ['Bezárás]
df.oszlopok = térkép (str.alsó, df.oszlopok)
hd = lista (df)
nyomtatás df.fej()
nyomtatás hd
return df

Most beállítok néhány takarítási kódot, amelyet az oktatóanyag futtatásához használnak. Ezt a két módszert fogjuk használni az általunk létrehozott Psycopg2 módszerek hívására.

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

A PostgreSQL adatbázishoz való csatlakozáshoz hozzá kell adnunk az alábbi módszert. A Try \ Except hibakezelést biztosít abban az esetben, ha a helyi adatbázis nem fut, vagy helytelen kapcsolati paramétereket adnak át az adatbázisnak. A Psycopg2 könyvtárban található connect módszer a kapcsolati karakterláncban átadott paraméterekkel csatlakozik az adatbázishoz. A dbname, a felhasználó és a jelszó paraméterei eltérhetnek. Ha a kapcsolat valamilyen oknál fogva meghiúsul, a hibaüzenet a konzolra kerül. Ez a módszer visszaadja a kapcsolati objektumot a hívási módszerünkhöz, ahol további adatbázis-műveletekhez használható.

def connect ():
hátrányok = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
próbáld ki:
conn = psycopg2.csatlakozás (hátrányok)
nyomtatás "csatlakoztatva"
kivéve:
print "Nem tudok csatlakozni az adatbázishoz"
visszakapcsolás

Miután létrehoztuk a kapcsolatot a PostgreSQL adatbázissal, betölthetjük adatainkat a get_data () metódusból az adatbázisunkba. A Psycopg2 és a pandák ezt nagyon egyszerű folyamatgá teszik.

Az első sor meghatározza azt a módszert, amelyet a pandáknak használniuk kell az adatbázishoz való csatlakozáshoz a DataFrame másolása érdekében. Ugyanazokat a paramétereket adja meg, mint a csatlakozási módszer. A második kódsor megtartja a DataFrame-et a PostgreSQL adatbázisba a to_sql () metódussal.

def create_table (tábla, df):
motor = create_engine ('postgresql + psycopg2: // postgres: [e-mail védett]: 5432 / tutorial')
df.to_sql (tábla, motor, if_exists = 'csere')

A PostgreSQL pgAdmin terminálunk gyors áttekintése azt mutatja, hogy a kód sikeresen betöltötte a DataFrame-et a táblázat bezárására. Most, hogy van néhány adat betöltve az adatbázisunkba. A psycopg segítségével néhány lekérdezést futtathatunk az adatokon. Az alábbi módszer úgy van kialakítva, hogy felvegye az első módszerünkben létrehozott kapcsolatot, és futtasson egy lekérdezést a PostgreSQL adatbázisunkban. A 4 SQL objektum létrehozásához hozzá kell adnunk egy másik importálási utasítást.

psycopg2-ból import sql

Dinamikus SQL parancsok létrehozásához a psycopg karakterlánc-formázással használja a változókat a karakterláncba a% s és a operátorok használatával.

A PostrgreSQL megkülönbözteti a kis- és nagybetűket. A get_data () metódusban az oszlopfejléceket kényszerítettük kisbetűsre. Az index nem szerepelt ebben az utasításban. Ahhoz, hogy a lekérdezésben továbbítsuk a nagybetűs „Data” oszlopfejlécet, dupla idézőjelben kell továbbítanunk a PostgreSQL számára. Ehhez egy sztringben a Pythonban el kell küldenie a „\” menekülési karaktert a dupla idézőjelek előtt.

Az alábbi python karakterlánc-formázási szintaxissal helyettesíthetjük a karakterlánc „% s” -ját. Ez a% s helyébe a dt dátum paramétert lépünk.

A létrehozott SQL lekérdezés végrehajtásához. Ezután át kell adnia a kurzornak .végrehajtani () metódus. A .fetchall () metódussal adja vissza a lekérdezés eredményeit. A konzolra nyomtatva megjelenítheti az eredményeket.

def get_row (dt, conn):
cr = konn.kurzor()
lekérdezés = sql.SQL ("SELECT aapl közelről WHERE" Dátum "= '% s'"% dt)
kr.végrehajt (lekérdezés)
nyomtatás kr.fetchall ()

A függvény futtatásához hozzáadjuk az alábbi kódsort a tutorial_run () metódushoz. Az alábbihoz hasonló eredményeket kell kapnia.

get_row ("2017-12-29", bekötés)

A következő módszerben a karakterlánc formátumú módszereket használjuk arra, hogy több paramétert adjunk át a lekérdezésünkbe. Ez a lekérdezés dátumot és három oszlopot vesz igénybe. A (z)% s operátor használata mellett a (z) operátort felhasználjuk arra, hogy a karakterlánc-változókat egy karakterláncba kapcsolja, és beírja őket a lekérdezési karakterláncunkba. A lekérdezési karaktersorozat most az alábbi összekapcsolást használja egy „,” elválasztóval, hogy több oszlopnevet továbbítson a lekérdezésünkbe.

def get_cols (dt, col1, col2, col3, conn):
cr = konn.kurzor()
lekérdezés = sql.SQL ("SELECT közelről WHERE" Dátum "= '% s'"% dt).formátum(
sql.SQL (',').csatlakozni ([sql.Azonosító (col1), sql.Azonosító (col2), sql.Azonosító (col3)]))
kr.végrehajt (lekérdezés)
nyomtatás kr.fetchall ()

Az új módszer használatához hozzáadom az alábbi sort a tutorial_run () metódusunkhoz. Az eredményeket alább kell látnia.

get_cols ("2017-12-29", "aapl", "kém", "goog", összekötő)

A következő módszer, amelyet írunk, két karakterlánc-helyettesítést használ a táblázatunk összes adatának lekérésére, az indexünk kivételével. Ez a módszer az előző módszerünkre épít, hozzáadva egy második „1” zárójeles jelölést. Ezúttal a zárójeleket úgy számozzuk meg, hogy azokat a sorrend formátumának fogalmakódjába cseréljük. Új módszerünk a három oszlopparamétert vesszővel elválasztja. Ezenkívül a formázási módszer második paramétere a tábla változó. A lekérdezési karaktersorozatot ezután úgy állítják össze, hogy a zárójeleket a formázási módszer paramétereivel helyettesítik. Ez: 0 = oszlopok és 1 = táblázat neve.

def get_tab (tábla, col1, col2, col3, conn):
cr = konn.kurzor()
lekérdezés = sql.SQL ("SELECT 0 from 1").formátum(
sql.SQL (',').csatlakozni ([sql.Azonosító (col1), sql.Azonosító (col2),
sql.Azonosító (col3)]), sql.Azonosító (táblázat))
kr.végrehajt (lekérdezés)
nyomtatás kr.fetchall ()

Az új módszer használatához hozzáadom az alábbi sort a tutorial_run () módszerünkhöz. Az eredményeket alább kell látnia.

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

Sokkal több módszer fedezhető fel a psycopg könyvtárban. Ezzel el kell kezdeni a psycopg funkcióinak megfelelő megértését. Az alábbiakban további forrásokat biztosítottam a dokumentációs oldalakon, amelyek lehetővé teszik a könyvtár szélesebb körű felfedezését.

Teljes kód

import psycopg2
a psycopg2-ból import sql
importálja a pandas_datareader adatot
def get_data (szimbólumok, start_date, end_date):
panel = adatok.DataReader (szimbólumok, 'yahoo', start_date, end_date)
df = panel ['Bezárás]
df.oszlopok = térkép (str.alsó, df.oszlopok)
hd = lista (df)
nyomtatás df.fej()
nyomtatás hd
return df
def connect ():
hátrányok = "dbname = 'tutorial' user =" postgres "host =" localhost "password =" password ""
próbáld ki:
conn = psycopg2.csatlakozás (hátrányok)
nyomtatás "csatlakoztatva"
kivéve:
print "Nem tudok csatlakozni az adatbázishoz"
visszakapcsolás
def create_table (tábla, df):
motor = create_engine ('postgresql + psycopg2: // postgres: [e-mail védett]: 5432 / tutorial')
df.to_sql (tábla, motor, if_exists = "csere")
def get_row (dt, conn):
cr = konn.kurzor()
lekérdezés = sql.SQL ("SELECT aapl közelről WHERE" Dátum "= '% s'"% dt)
kr.végrehajt (lekérdezés)
nyomtatás kr.fetchall ()
def get_cols (dt, col1, col2, col3, conn):
cr = konn.kurzor()
lekérdezés = sql.SQL ("SELECT közelről WHERE" Dátum "= '% s'"% dt).formátum(
sql.SQL (',').csatlakozni ([sql.Azonosító (col1),
sql.Azonosító (col2), sql.Azonosító (col3)]))
kr.végrehajt (lekérdezés)
nyomtatás kr.fetchall ()
def get_tab (tábla, col1, col2, col3, conn):
cr = konn.kurzor()
lekérdezés = sql.SQL ("SELECT 0 from 1").formátum(
sql.SQL (',').csatlakozni ([sql.Azonosító (col1), sql.Azonosító (col2),
sql.Azonosító (col3)]), sql.Azonosító (táblázat))
kr.végrehajt (lekérdezés)
nyomtatás kr.fetchall ()
def tutorial_run ():
conn = connect ()
szimbólumok = ['SPY', 'AAPL', 'GOOG']
df = get_data (szimbólumok, '2006-01-03', '2017-12-31')
create_table ("bezárás", df)
get_row ("2017-12-29", bekötés)
get_cols ("2017-12-29", "aapl", "kém", "goog", összekötő)
get_tab ("close", "aapl", "spy", "goog", conn)
ha __name__ == "__main__":
tutorial_run ()

Hivatkozások

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

A kurzor véletlenszerűen ugrik vagy mozog, miközben gépel a Windows 10-ben
Ha úgy találja, hogy az egér kurzor önállóan, automatikusan, véletlenszerűen ugrik vagy mozog, miközben gépel Windows laptopba vagy számítógépbe, akko...
Az egér és az érintőpadok görgetési irányának megfordítása a Windows 10 rendszerben
Egér és Érintőpads nemcsak a számítást könnyűvé, de hatékonyabbá és kevésbé időigényessé is teszi. Nem tudunk elképzelni egy életet ezek nélkül az esz...
Az egérmutató és a kurzor méretének, színének és sémájának módosítása a Windows 10 rendszeren
Az egérmutató és a kurzor a Windows 10 operációs rendszerben nagyon fontos szempont. Ez elmondható más operációs rendszerekről is, tehát valójában eze...