
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    SW*                     @   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T ejZ	zd dl
mZ W n ek
rr   d dlZY nX eeje eeje eeje G dd deZe	dk rd	Zd	Zne Ze ZdS )
    N)ImproperlyConfigured)sqlite3)*dbapi2c                       sF   e Zd Zd fdd	Zdd Zdd Zedd	 Zed
d Z  Z	S )BerkeleyDatabaseNc                    s\   t t| j|f|d|i| |r0| jd |rD| jd|f |rX| jd|f d S )Npragmas)multiversionon	page_size
cache_size)superr   __init___pragmasappend)selfdatabaser   r   r   r	   argskwargs	__class__ G/opt/alt/python38/lib64/python3.8/site-packages/playhouse/berkeleydb.pyr      s    
zBerkeleyDatabase.__init__c                 K   sL   t s*dt }tr|d7 }n|d7 }t|tj|f|}d |_| | |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   connectZisolation_levelZ_add_conn_hooks)r   r   r   messageconnr   r   r   _connect$   s    

zBerkeleyDatabase._connectc              	   C   st   | j rp| }| j D ]R\}}|dkrTz|d||f  W qf tjk
rP   Y qfX q|d||f  q|  d S )Nr	   zPRAGMA %s = %s;)r   cursorexecuter   ZOperationalErrorclose)r   r   r    Zpragmavaluer   r   r   _set_pragmas8   s    zBerkeleyDatabase._set_pragmasc                 C   st   zddl m} W n tk
r,   dd l}Y nX |d}z|d }W 5 |  X |D ]\}|dkrZ dS qZdS )Nr   r   z:memory:zPRAGMA compile_options;BERKELEY_DBTF)	pysqlite2r   ImportErrorr   r   r"   r!   Zfetchall)clsr   r   ZresultsZoptionr   r   r   check_pysqliteJ   s    


zBerkeleyDatabase.check_pysqlitec                 C   sZ   t jdrd}nt jdkr"d}nd}zt|}W n tk
rJ   Y dS X |ddkS )	Nwinzlibsqlite3.dlldarwinzlibsqlite3.dylibzlibsqlite3.soFr%      )sysplatform
startswithctypesZCDLLOSErrorZsqlite3_compileoption_used)r(   ZlibraryZ	libsqliter   r   r   check_libsqliteZ   s    
z BerkeleyDatabase.check_libsqlite)NNNN)
__name__
__module____qualname__r   r   r$   classmethodr)   r2   __classcell__r   r   r   r   r      s     
r   )         F)r0   ZdatetimeZdecimalr-   Zpeeweer   r   Zplayhouse.sqlite_extZsqlite_version_infoZsqlite3_lib_versionr&   r   r   r'   Zregister_adapterZDecimalstrdatetimeZSqliteExtDatabaser   r   r   r)   r2   r   r   r   r   <module>   s(   T