File: //opt/alt/python35/lib64/python3.5/site-packages/playhouse/__pycache__/berkeleydb.cpython-35.pyc
R6�W* � @ s d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l Te j Z y d d l
m Z Wn e
k
r� d d l Z Yn Xe j e j e � e j e j e � e j e j e � Gd d � d e � Z e d k rd Z d Z n e j � Z e j � Z d S)
� N)�ImproperlyConfigured)�sqlite3)�*)�dbapi2c sj e Z d Z d d d d � f d d � Z d d � Z d d � Z e d d � � Z e d
d � � Z � S)�BerkeleyDatabaseNc st t t | � j | | d | | �| r8 | j j d � | rT | j j d | f � | rp | j j d | f � d S)N�pragmas�multiversion�on� page_size�
cache_size)r r )�superr �__init__�_pragmas�append)�self�databaser r r
r �args�kwargs)� __class__� �/berkeleydb.pyr
s zBerkeleyDatabase.__init__c K se t s9 d t } t r# | d 7} n
| d 7} t | � � t j | | � } d | _ | j | � | S)NzkYour Python SQLite driver (%s) does not appear to have been compiled against the BerkeleyDB SQLite library.zb However, the libsqlite on your system is the BerkeleyDB implementation. Try recompiling pysqlite.z` Additionally, the libsqlite on your system does not appear to be the BerkeleyDB implementation.)�PYSQLITE_BERKELEYDB�
berkeleydb�LIBSQLITE_BERKELEYDBr �connectZisolation_levelZ_add_conn_hooks)r r r �message�connr r r �_connect$ s
zBerkeleyDatabase._connectc C s� | j r� | j � } xp | j D]e \ } } | d k rm y | j d | | f � Wq� t j k
ri Yq� Xq | j d | | f � q W| j � d S)Nr zPRAGMA %s = %s;)r �cursor�executer ZOperationalError�close)r r r Zpragma�valuer r r �_set_pragmas8 s zBerkeleyDatabase._set_pragmasc C s� y d d l m } Wn t k
r4 d d l } Yn X| j d � } z | j d � j � } Wd | j � Xx! | D] \ } | d k rr d Sqr Wd S)Nr )r z:memory:zPRAGMA compile_options;�BERKELEY_DBTF)� pysqlite2r �ImportErrorr r r Zfetchallr )�clsr r �resultsZoptionr r r �check_pysqliteJ s
zBerkeleyDatabase.check_pysqlitec C sx t j j d � r d } n t j d k r3 d } n d } y t j | � } Wn t k
rd d SYn X| j d � d k S) N�winzlibsqlite3.dll�darwinzlibsqlite3.dylibz
libsqlite3.soFr# � )�sys�platform�
startswith�ctypesZCDLL�OSErrorZsqlite3_compileoption_used)r&