dersblog

pyscopg2

Postgresql Erişimi

Gerekli paket pyscopg. Python DB arayüzünü gerçekleştiren (implement) bir paket, yani MySql tabanlara bağlantı için kod yazanlar için çağrılar tanıdık gelecektir. En basit örnek test.py adlı bir dosya olsun,

import psycopg2

conn = psycopg2.connect("dbname=[taban] user=postgres password=postgres")
cur = conn.cursor()
cur.execute("SELECT * from tablo limit 1")
print cur.fetchone()

Isletmek icin

sudo -u postgres python test.py

Veri Taban İçeriğini Gezmek

Eğer veri tabanı, içindeki tabloları, bu tablolardaki bazı verileri görmek istersek, GUİ araçları yerine bir jupyter not defteri üzerinden kod işletmeyi seçebiliriz. Taban erişimi için psycopg2 iş görür. Bağlantı aldıktan sonra (Postgresql olsun),

import psycopg2

conn = psycopg2.connect(
     host='[makina]',
     database='[taban]',
     user='[kullanici]',
     password='[sifre]',
     port=port
)

şu metotlarla taban içeriği gösterilebilir

import psycopg2

sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"


def get_tables(con):
    """
    Tum tablolari goster
    """    
    cursor = con.cursor()
    res = []
    cursor.execute(sql)
    for table in cursor.fetchall():
        res.append(table)
    return res


def get_table_col_names(con, table_str):
    """
    Tablo kolon isimlerini al
    """
    col_names = []
    try:
        cur = con.cursor()
        cur.execute("select * from " + table_str + " LIMIT 0")
        for desc in cur.description:
            col_names.append(desc[0])        
        cur.close()
    except psycopg2.Error as e:
        print (e)
    return col_names


def get_sample(con, table_str):
    """
    Tablodan rasgele satirlar goster
    """
    res = []
    try:        
        cur = con.cursor()
        cur.execute("select * from " + table_str + " ORDER BY RANDOM() LIMIT 10")
        for x in cur: res.append(x)
        cur.close()
    except psycopg2.Error as e:
        print (e)
    return res


def get_count(con, table_str):
    """
    Tabloda kac satir var
    """
    res = []
    try:        
        cur = con.cursor()
        cur.execute("select count(*) from " + table_str)
        res = cur.fetchone()
        cur.close()
    except psycopg2.Error as e:
        print (e)
    return res

Jupyter not defterinde bildiğimiz gibi etkileşimli (interactive) bir şekilde kod yazılabiliyor, bir hücrede yazılan kodu hemen işletip doküman içinde görüyoruz.. Eh böyle olunca üstteki çağrıları istedigimiz tablo üzerinde yapınca sanki GUİ araçından taban içeriğini gezmis oluyoruz.

Jupyter kurmak istemeyenler, direk markdown md dosyaları içinden üstteki işlemleri yapmak isteyenler (ve Emacs kullanıcıları) bizim eklentiyi kullanabilir.


Yukarı