Psycopg2

Tutorial Psycopg2

Tutorial Psycopg2

Tutorial Python, PostgreSQL, dan Psycopg2

Untuk mengembangkan aplikasi di luar skrip sederhana, perlu untuk menyimpan data di luar memori ke dalam database.  Ada banyak kemungkinan pilihan untuk database, tetapi PostgreSQL adalah platform open source yang kuat yang dapat dengan mudah menskalakan ke produksi.

Python dan PostgreSQL dapat dihubungkan untuk mengembangkan aplikasi yang kuat dengan cepat.  Psycopg adalah adaptor PostgreSQL yang dapat digunakan untuk memanfaatkan PostgreSQL melalui perpustakaan berbasis Python.  Tutorial ini akan memandu instalasi Psycopg2 dan beberapa kode Python untuk mendemonstrasikan penggunaannya.

Anda dapat menginstal Psycopg2 melalui perintah pip terminal di bawah ini.

$ pip instal psycopg2

Saat menginstal Anda akan melihat output terminal di bawah ini.

Mengumpulkan psycopg2
Mengunduh 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.apa (1.7MB)
100% |████████████████████████████████| 1.7MB 397kB/dtk
Menginstal paket yang dikumpulkan: psycopg2
Berhasil menginstal psycopg2-2.7.3.2
Bradleys-Mini:~ BradleyPatton$

Untuk mengimpor paket Psycopg2 ke dalam aplikasi Python Anda, Anda menggunakan baris kode di bawah ini.

impor psycopg2

Untuk mendapatkan beberapa data untuk dimuat ke dalam database kami, saya telah meminjam beberapa kode dari tutorial sebelumnya tentang panda panda. Kode di bawah ini akan membuat DataFrame panda dengan data historis.  Ini kemudian akan dimanfaatkan untuk membuat tabel di tabel PostgreSQL.

def get_data(simbol, tanggal_mulai, tanggal_akhir):
panel = data.Pembaca Data(simbol, 'yahoo', tanggal_mulai, tanggal_akhir)
df = panel['Tutup']
df.kolom = peta(str.lebih rendah, df.kolom)
hd = daftar(df)
cetak df.kepala()
cetak hd
kembali df

Sekarang saya akan menyiapkan beberapa kode housekeeping yang digunakan untuk menjalankan tutorial. Kedua metode ini akan digunakan untuk memanggil metode Psycopg2 yang kita buat.

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

Untuk terhubung ke database PostgreSQL, kita perlu menambahkan metode di bawah ini:. Try\Except menyediakan beberapa penanganan kesalahan jika database lokal tidak berjalan, atau parameter koneksi yang salah diteruskan ke database. Metode koneksi di perpustakaan Psycopg2 terhubung ke database dengan parameter yang diteruskan dalam string koneksi. Parameter Anda untuk dbname, pengguna, dan kata sandi mungkin berbeda. Jika koneksi gagal karena suatu alasan, pesan kesalahan akan ditulis ke konsol. Metode ini mengembalikan objek koneksi kembali ke metode panggilan kami di mana ia dapat digunakan untuk operasi database lebih lanjut.

pasti terhubung():
kontra = "dbname='tutorial' user="postgres" host="localhost" password="password""
mencoba:
samb = psycopg2.menghubungkan (kontra)
cetak "Terhubung"
kecuali:
print "Saya tidak dapat terhubung ke database"
sambungan kembali

Setelah kita membuat koneksi ke database PostgreSQL, kita dapat memuat data kita dari metode get_data() ke dalam database kita. Psycopg2 dan panda menjadikan ini proses yang sangat sederhana.

Baris pertama mendefinisikan metode yang harus digunakan panda untuk terhubung ke database untuk menyalin DataFrame. Anda akan memberikan parameter yang sama dengan metode koneksi Anda. Baris kode kedua menyimpan DataFrame ke database PostgreSQL dengan metode to_sql().

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

Tampilan cepat di terminal pgAdmin PostgreSQL kami menunjukkan bahwa kode berhasil memuat DataFrame ke dalam tabel "tutup". Sekarang kami memiliki beberapa data yang dimuat ke dalam basis data kami. Kita dapat menggunakan psycopg untuk menjalankan beberapa kueri pada data. Metode di bawah ini dibangun untuk mengambil koneksi yang dibuat dalam metode pertama kami dan menjalankan kueri pada database PostgreSQL kami. Untuk membuat 4 objek SQL, kita perlu menambahkan pernyataan impor lainnya.

dari psycopg2 impor sql

Untuk membuat perintah SQL dinamis, psycopg menggunakan pemformatan string untuk mengisi variabel ke dalam string menggunakan operator %s dan .

PostrgreSQL peka huruf besar-kecil. Dalam metode get_data() kami memaksa tajuk kolom kami menjadi huruf kecil. Indeks tidak termasuk dalam instruksi ini. Untuk meneruskan tajuk kolom "Data" modal dalam kueri, kita harus meneruskannya ke PostgreSQL dalam tanda kutip ganda. Untuk melakukan ini dalam string dengan Python, Anda perlu mengirim karakter escape “\" sebelum tanda kutip ganda.

Kita dapat mengganti ""%s"" dalam string menggunakan sintaks format string python di bawah ini:. Ini menggantikan %s dengan parameter tanggal kami dt.

Untuk mengeksekusi query SQL yang telah dibuat. Anda kemudian harus meneruskannya ke kursor .eksekusi() metode. Dengan memanggil .fetchall() metode, Anda mengembalikan hasil kueri. Saat dicetak ke konsol, Anda dapat menampilkan hasilnya.

def get_row(dt, samb):
cr = samb.kursor()
kueri = sql.SQL(""PILIH aapl dari tutup WHERE ""Tanggal"" = '%s'"" % dt)
cr.jalankan (permintaan)
cetak cr.ambil semua()

Untuk menjalankan fungsi ini kita tambahkan baris kode di bawah ini ke metode tutorial_run(). Anda harus mendapatkan hasil yang mirip dengan di bawah ini.

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

Dalam metode berikutnya, kami akan menggunakan metode format string untuk meneruskan beberapa parameter ke dalam kueri kami. Kueri ini akan mengambil tanggal dan tiga kolom. Selain menggunakan operator %s, kita akan menggunakan operator untuk menggabungkan variabel string ke dalam string dan memasukkannya ke dalam string kueri kita. String kueri kami sekarang menggunakan gabungan di bawah ini dengan pemisah "","" untuk meneruskan beberapa nama kolom ke kueri kami.

def get_cols(dt, col1, col2, col3, samb):
cr = samb.kursor()
kueri = sql.SQL(""SELECT from close WHERE ""Date"" = '%s'"" % dt).format(
sql.SQL(',').bergabung([sql.Pengidentifikasi (col1), sql.Pengidentifikasi (col2), sql.Pengenal(col3)]))
cr.jalankan (permintaan)
cetak cr.ambil semua()

Untuk menggunakan metode baru kami, saya akan menambahkan baris di bawah ini ke metode tutorial_run() kami. Anda akan melihat hasilnya di bawah ini.

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

Metode berikutnya yang kita tulis akan menggunakan dua pengganti string untuk menarik semua data dalam tabel kita dengan pengecualian indeks kita. Metode ini dibangun di atas metode kami sebelumnya dengan menambahkan notasi braket ganti kedua “1”. Kali ini tanda kurung diberi nomor sehingga diganti dengan kode pengertian format urutan. Metode baru kami menggabungkan tiga parameter kolom dengan pemisah koma. Selain itu, parameter kedua dalam metode format adalah variabel tabel. String kueri kemudian dibangun dengan mengganti tanda kurung dengan parameter dalam metode format secara berurutan. Yaitu 0 = kolom dan 1 = nama tabel.

def get_tab(tabel, col1, col2, col3, samb):
cr = samb.kursor()
kueri = sql.SQL(""PILIH 0 dari 1"").format(
sql.SQL(',').bergabung([sql.Pengidentifikasi (col1), sql.Pengenal (kol2),
sql.Pengenal(col3)]), sql.Pengidentifikasi (tabel))
cr.jalankan (permintaan)
cetak cr.ambil semua()

Untuk menggunakan metode baru kami, saya akan menambahkan baris di bawah ini ke metode tutorial_run() kami. Anda akan melihat hasilnya di bawah ini.

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

Ada lebih banyak metode untuk dijelajahi di perpustakaan psycopg. Ini akan membantu Anda memulai dengan pemahaman yang baik tentang fungsi psycopg. Saya telah menyediakan lebih banyak sumber daya di bawah ini di halaman dokumentasi yang memungkinkan Anda menjelajahi perpustakaan secara lebih luas.

Kode Lengkap

impor psycopg2
dari psycopg2 impor sql
impor pandas_datareader sebagai data
def get_data(simbol, tanggal_mulai, tanggal_akhir):
panel = data.Pembaca Data(simbol, 'yahoo', tanggal_mulai, tanggal_akhir)
df = panel['Tutup']
df.kolom = peta(str.lebih rendah, df.kolom)
hd = daftar(df)
cetak df.kepala()
cetak hd
kembali df
pasti terhubung():
kontra = ""dbname='tutorial' user=""postgres"" host=""localhost"" password=""password""""
mencoba:
samb = psycopg2.menghubungkan (kontra)
cetak ""Terhubung""
kecuali:
print ""Saya tidak dapat terhubung ke database""
sambungan kembali
def create_table(tabel, df):
engine = create_engine('postgresql+psycopg2://postgres:[email protected]:5432/tutorial')
df.to_sql(tabel, mesin, if_exists=""ganti"")
def get_row(dt, samb):
cr = samb.kursor()
kueri = sql.SQL(""PILIH aapl dari tutup WHERE ""Tanggal"" = '%s'"" % dt)
cr.jalankan (permintaan)
cetak cr.ambil semua()
def get_cols(dt, col1, col2, col3, samb):
cr = samb.kursor()
kueri = sql.SQL(""SELECT from close WHERE ""Date"" = '%s'"" % dt).format(
sql.SQL(',').bergabung([sql.Pengenal(col1),
sql.Pengidentifikasi (col2), sql.Pengenal(col3)]))
cr.jalankan (permintaan)
cetak cr.ambil semua()
def get_tab(tabel,kol1,kol2,kol3,samb):
cr = samb.kursor()
kueri = sql.SQL(""PILIH 0 dari 1"").format(
sql.SQL(',').bergabung([sql.Pengidentifikasi (col1), sql.Pengenal (kol2),
sql.Pengenal(col3)]), sql.Pengidentifikasi (tabel))
cr.jalankan (permintaan)
cetak cr.ambil semua()
def tutorial_run():
sambung = sambung()
simbol = ['SPY', 'AAPL','GOOG']
df = get_data(simbol, '2006-01-03', '2017-12-31')
create_table(""tutup"", df)
get_row(""2017-12-29"",sambungan)
get_cols(""2017-12-29"",,""aapl"",,""spy"", ""goog"", samb)
get_tab(""close"", ""aapl"", ""spy"", ""goog"", samb)
jika __name__ == ""__main__"":
tutorial_run()

Referensi

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

Tombol tengah mouse tidak berfungsi di Windows 10
Itu tombol tengah mouse membantu Anda menelusuri halaman web dan layar yang panjang dengan banyak data. Jika itu berhenti, Anda akhirnya akan mengguna...
Cara Mengganti Tombol Kiri & Kanan Mouse di PC Windows 10
Sudah menjadi hal biasa bahwa semua perangkat mouse komputer dirancang secara ergonomis untuk pengguna yang tidak kidal. Tetapi ada perangkat mouse ya...
Tiru klik Mouse dengan mengarahkan mouse menggunakan Clickless Mouse di Windows 10
Menggunakan mouse atau keyboard dalam posisi yang salah dari penggunaan yang berlebihan dapat menyebabkan banyak masalah kesehatan, termasuk keteganga...