ó
gbc           @   sd   d  Z  d d l Z d d l Z d d l m Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d S(   s	  
Module : KB.extern
Author : Eric Coissac
Date   : 03/05/2004

Module wrapping psycopg interface module to allow connection
to a postgresql databases with the same interface from
backend and external script.

This module define a class usable from external script 
iÿÿÿÿN(   t   kbt
   Connectionc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         O   sG   | r |  j  i | d 6k n	 | |  _  |  j  GHt j |  j    |  _ d  S(   Nt   dsn(   t   connectParamt   psycopg2t   connectt   db(   t   selfR   t   kconnectParam(    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyt   __init__   s
    	c         C   sV   d } xI | rQ | d k  rQ y t  j |  j   |  _ Wn | d 7} q	 Xd } q	 Wd  S(   Ni   iè  i    (   R   R   R   R   (   R   t   ok(    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyt   restart   s    c         C   s:   t  |  j ƒ } t |  d ƒ r6 |  j r6 |  j | _ n  | S(   Nt
   autocommit(   t   CursorR   t   hasattrR   (   R   t   curs(    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyt   cursor'   s    c         C   s   |  j  j ƒ  d  S(   N(   R   t   commit(   R   (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyR   -   s    c         C   s#   t  |  d ƒ r |  j j ƒ  n  d  S(   NR   (   R   R   t   rollback(   R   (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyR   0   s    c         C   s    t  |  d ƒ r |  j ƒ  n  d  S(   NR   (   R   R   (   R   (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyt   __del__4   s    (   t   __name__t
   __module__R	   R   R   R   R   R   (    (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyR      s   					R   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  | j ƒ  |  _ d  S(   N(   R   R   R   (   R   R   (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyR	   :   s    	c         C   s
  y< |  j  j | ƒ t |  d ƒ r; |  j r; |  j j ƒ  n  WnY t j k
 rk } t j	 d | IJ| ‚ n- t j
 k
 r— } t j	 d | IJ| ‚ n XyY g  |  j  j D] } | d ^ q¨ } g  |  j  j ƒ  D] } t t d  | | ƒ ƒ ^ qÎ SWn t k
 rg  SXd  S(   NR   s   ===> %ss   ---> %si    (   R   t   executeR   R   R   R   R   t   ProgrammingErrort   syst   stderrt   IntegrityErrort   descriptiont   fetchallt   dictt   mapt   Nonet	   TypeError(   R   t   queryt   et   xt   labelt   y(    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyR   >   s     	
#3(   R   R   R	   R   (    (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyR   8   s   	(   t   __doc__R   R   t
   obischemasR    R   R   (    (    (    s<   lib/python2.7/site-packages/obitools/obischemas/kb/extern.pyt   <module>   s
   &