2015-04-14 17 views
5

Python'da PostgreSQL'e bağlanmak için psycopg2 kullanıyorum ve bağlantı havuzu kullanmak istiyorum.psycopg2 bağlantı havuzunda "INSERT" nasıl kullanılır?

INSERT sorgusunu çalıştırdığımda commit() ve rollback() yerine ne yapmam gerektiğini bilmiyorum.

db = pool.SimpleConnectionPool(1, 10,host=conf_hostname,database=conf_dbname,user=conf_dbuser,password=conf_dbpass,port=conf_dbport) 


# Get Cursor 
@contextmanager 
def get_cursor(): 
    con = db.getconn() 
    try: 
     yield con.cursor() 
    finally: 
     db.putconn(con) 


with get_cursor() as cursor: 
    cursor.execute("INSERT INTO table (fields) VALUES (values) RETURNING id") 
    id = cursor.fetchone() 

Eklenti kaydı id hatası() olmadan alamıyorum.

+0

Taahhüt için bir yapılandırma buldum: "con.autocommit = True", rollback() –

cevap

3

GÜNCELLEME Ben kodu test edemez ama size bazı fikirler verebilir: Sen bağlantılı olmayan db

# Get Cursor 
@contextmanager 
def get_cursor(): 
    con = db.getconn() 
    try: 
     yield con 
    finally: 
     db.putconn(con) 

with get_cursor() as cursor: 
    con.cursor.execute("INSERT INTO table (fields) VALUES (values) RETURNING id") 
    con.commit() 
    id = cursor.fetchone() 

veya

# Get Cursor 
@contextmanager 
def get_cursor(): 
    con = db.getconn() 
    try: 
     yield con.cursor() 
     con.commit() 
    finally: 
     db.putconn(con) 


with get_cursor() as cursor: 
    con.cursor.execute("INSERT INTO table (fields) VALUES (values) RETURNING id") 
    id = cursor.fetchone() 

Bağlantı havuzu içinde taahhüt yapmak Bir db'ye yeni bir bağlantı oluşturmanın pahalı olabileceği ve işlemlerin veya geri dönüşlerin önlenemeyeceği için var olabilir. Böylelikle verilerinizi herhangi bir sorun olmadan gerçekleştirebilirsiniz, veriyi vermek bağlantıyı bozmaz.

+0

için ne yapabilirim teşekkür ederim. ama veri nasıl işlenir? db.commit() mevcut değil! –

+0

veya "con.commit()" ve "con.rollback()" kullanmalı mıyım? –

+1

evet, "con.commit()" ve "con.rollback()" mut – valentin

İlgili konular