%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3.6/site-packages/pyzor/engines/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3.6/site-packages/pyzor/engines/__pycache__/mysql.cpython-36.pyc

3

�2�^�0�@s�dZddlZddlZddlZddlZddlZddlZyddlZWnek
r\ddl	ZYnXyddl
Z
ddlZ
dZWnek
r�dZYnXddl
TGdd�de�ZGdd	�d	e�ZGd
d�de�Zes�eddddd�Zneeeeed�ZdS)
zMySQLdb database engine.�NTF)�*c@s�eZdZdZdZd6ZdZejd�Z	d7dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd8d(d)�Zd9d*d+�Zd:d,d-�Zd;d.d/�Zd<d0d1�Zd2d3�Ze d=d4d5��Z!dS)>�
MySQLDBHandleFTi��<ZpyzordNcCsJ||_d|_|jd�\|_|_|_|_|_d|_d|_	|j
�|j�dS)N�,r)�max_age�db�split�host�user�passwd�db_name�
table_name�last_connect_attempt�reorganize_timer�	reconnect�start_reorganizing)�self�fn�moder�r�/usr/lib/python3.6/mysql.py�__init__.szMySQLDBHandle.__init__cCs(tj|j|j|j|jd�}|jd�|S)zReturns a new db connection.)r
rrrT)�MySQLdbZconnectr
rr
rZ
autocommit)rrrrr�_get_new_connection;s
z!MySQLDBHandle._get_new_connectioncCs8tj�|j|jkr4|jjdtj|j|j��dSdS)NzCan't reconnect until %sFT)�timer�reconnect_period�log�debugZctime)rrrr�_check_reconnect_timeBsz#MySQLDBHandle._check_reconnect_timecCs�|j�sdS|jr8y|jj�Wntjk
r6YnXy|j�|_Wn8tjk
r~}z|jjd|�d|_WYdd}~XnXtj�|_	dS)Nz!Unable to connect to database: %s)
rr�closer�Errorrr�errorrr)r�errrrKszMySQLDBHandle.reconnectccsJ|jtjjd�}|jd|j�x|j�}|s0P|dVq"W|j�dS)N)�cursorclasszSELECT digest FROM %sr)�cursorr�cursors�SSCursor�executer�fetchoner )rr�c�rowrrr�_iter[szMySQLDBHandle._itercCs|jd|jf�S)N�iter)�
_safe_callr,)rrrr�__iter__eszMySQLDBHandle.__iter__ccsZ|jtjjd�}|jd|j�x,|j�}|s0P|dt|dd��fVq"W|j�dS)N)r$zVSELECT digest, r_count, wl_count, r_entered, r_updated, wl_entered, wl_updated FROM %sr�)	r%rr&r'r(rr)�Recordr )rrr*r+rrr�
_iteritemshs
zMySQLDBHandle._iteritemscCs|jd|jf�S)N�	iteritems)r.r2)rrrrr3sszMySQLDBHandle.iteritemscCst|jd|jf��S)Nr3)�listr.r2)rrrr�itemsvszMySQLDBHandle.itemscCs0y|jr|jj�Wntjk
r*YnXdS)z7Close the database when the object is no longer needed.N)rr rr!)rrrr�__del__ys
zMySQLDBHandle.__del__cCs^y||d|ji�Stjtfk
rX}z&|jjd||�|j�td��WYdd}~XnXdS)Nrz
%s failed: %sz!Database temporarily unavailable.)rrr!�AttributeErrorrr"r�
DatabaseError)r�name�method�args�exrrrr.�szMySQLDBHandle._safe_callcCs|jd|j|f�S)N�report)r.�_report)r�keysrrrr=�szMySQLDBHandle.reportcCs|jd|j|f�S)N�	whitelist)r.�
_whitelist)rr?rrrr@�szMySQLDBHandle.whitelistcCs|jd|j|f�S)N�getitem)r.�_really__getitem__)r�keyrrr�__getitem__�szMySQLDBHandle.__getitem__cCs|jd|j||f�S)N�setitem)r.�_really__setitem__)rrD�valuerrr�__setitem__�s
zMySQLDBHandle.__setitem__cCs|jd|j|f�S)N�delitem)r.�_really__delitem__)rrDrrr�__delitem__�szMySQLDBHandle.__delitem__cCs8|j�}z |jd|jtdd�|��Wd|j�XdS)Nz�INSERT INTO %s (digest, r_count, wl_count, r_entered, r_updated, wl_entered, wl_updated) VALUES (%%s, 1, 0, NOW(), NOW(), NOW(), NOW()) ON DUPLICATE KEY UPDATE r_count=r_count+1, r_updated=NOW()cSs|fS)Nr)rDrrr�<lambda>�sz'MySQLDBHandle._report.<locals>.<lambda>)r%�executemanyr�mapr )rr?rr*rrrr>�szMySQLDBHandle._reportcCs8|j�}z |jd|jtdd�|��Wd|j�XdS)Nz�INSERT INTO %s (digest, r_count, wl_count, r_entered, r_updated, wl_entered, wl_updated) VALUES (%%s, 0, 1, NOW(), NOW(), NOW(), NOW()) ON DUPLICATE KEY UPDATE wl_count=wl_count+1, wl_updated=NOW()cSs|fS)Nr)rDrrrrM�sz*MySQLDBHandle._whitelist.<locals>.<lambda>)r%rNrrOr )rr?rr*rrrrA�szMySQLDBHandle._whitelistcCsX|j�}|jd|j|f�z,yt|j��Stk
rDt��YnXWd|j�XdS)z+__getitem__ without the exception handling.z_SELECT r_count, wl_count, r_entered, r_updated, wl_entered, wl_updated FROM %s WHERE digest=%%sN)r%r(rr1r)�	TypeError�KeyErrorr )rrDrr*rrrrC�sz MySQLDBHandle._really__getitem__cCs`|j�}zH|jd|j||j|j|j|j|j|j|j|j|j|j|j|jf
�Wd|j	�XdS)z+__setitem__ without the exception handling.z�INSERT INTO %s (digest, r_count, wl_count, r_entered, r_updated, wl_entered, wl_updated) VALUES (%%s, %%s, %%s, %%s, %%s, %%s, %%s) ON DUPLICATE KEY UPDATE r_count=%%s, wl_count=%%s, r_entered=%%s, r_updated=%%s, wl_entered=%%s, wl_updated=%%sN)
r%r(rZr_countZwl_countZ	r_enteredZ	r_updatedZ
wl_enteredZ
wl_updatedr )rrDrHrr*rrrrG�sz MySQLDBHandle._really__setitem__c
Cs0|j�}z|jd|j|f�Wd|j�XdS)z+__delitem__ without the exception handling.zDELETE FROM %s WHERE digest=%%sN)r%r(rr )rrDrr*rrrrK�s
z MySQLDBHandle._really__delitem__cCs�|js
dS|jjd�tjj�tj|jd�}|j�}|j�}zTy|jd|j	|f�Wn6t
jtfk
r�}z|jj
d|�WYdd}~XnXWd|j�|j�Xtj|j|j�|_|jjd�|jj�dS)Nzreorganizing the database)Zsecondsz"DELETE FROM %s WHERE r_updated<%%szUnable to reorganise: %sT)rrr�datetimeZnowZ	timedeltarr%r(rrr!r7�warnr �	threadingZTimer�reorganize_periodrrZ	setDaemon�start)rZ
breakpointrr*r#rrrr�s$$

z MySQLDBHandle.start_reorganizingccs2tj||||d�Vxtj|||dd�VqWdS)z^Yields a number of database connections suitable for a Pyzor
        pre-fork server.
        )rN)�	functools�partial)�clsrrrrrr�get_prefork_connections�sz%MySQLDBHandle.get_prefork_connectionsi�Q)N)N)N)N)N)N)N)"�__name__�
__module__�__qualname__Zabsolute_sourceZhandles_one_steprUr�loggingZ	getLoggerrrrrrr,r/r2r3r5r6r.r=r@rErIrLr>rArCrGrKr�classmethodrZrrrrrs:


	





	rc@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�ThreadedMySQLDBHandleNcCs,||_|jrtj�|_tj||||d�dS)N)r)�bound�Queue�db_queuerr)rrrrrarrrrs
zThreadedMySQLDBHandle.__init__cCs|jr|jj�S|j�SdS)N)rarc�getr)rrrr�_get_connections
z%ThreadedMySQLDBHandle._get_connectioncCs |jr|jj|�n|j�dS)N)rarc�putr )rrrrr�_release_connection
sz)ThreadedMySQLDBHandle._release_connectionc#Cs�|j�}z�y||d|i�Stjtfk
r�}zx|jjd||�|jsNtd��y|jd�||d|i�Stjtfk
r�}z|j	|�}td��WYdd}~XnXWYdd}~XnXWd|j
|�XdS)Nrz
%s failed: %sz!Database temporarily unavailable.T)rerr!r7rr"rar8Zping�
_reconnectrg)rr9r:r;rr<rrrr.s

0z ThreadedMySQLDBHandle._safe_callcCs2|js
dSx"t|j�D]}|jj|j��qWdS)N)ra�rangercrfr)r�_rrrr&szThreadedMySQLDBHandle.reconnectcCs"|j�s|Stj�|_|j�SdS)N)rrrr)rrrrrrh,s
z ThreadedMySQLDBHandle._reconnectcCs`|js
dSxPt|jj�D]@}y|j�Wqtjk
r@wYqtjk
rVPYqXqWdS)N)	rar-rcZ
get_nowaitr rr!rbZEmpty)rrrrrr63szThreadedMySQLDBHandle.__del__)NN)
r[r\r]rrergr.rrhr6rrrrr`s
r`c@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�ProcessMySQLDBHandleNcCstj||||d�dS)N)r)rr)rrrrrrrr@szProcessMySQLDBHandle.__init__cCsdS)Nr)rrrrrCszProcessMySQLDBHandle.reconnectcCsdS)Nr)rrrrr6FszProcessMySQLDBHandle.__del__cCsxd}z\y|j�}||d|i�Stjtfk
r\}z|jjd||�td��WYdd}~XnXWd|dk	rr|j�XdS)Nrz
%s failed: %sz!Database temporarily unavailable.)rrr!r7rr"r8r )rr9r:r;rr<rrrr.IszProcessMySQLDBHandle._safe_call)N)r[r\r]rrr6r.rrrrrk?s
rk)Zsingle_threadedZmulti_threadedZmulti_processingZprefork)�__doc__rr^rR�	itertoolsrWrTrb�ImportErrorZqueuerZMySQLdb.cursorsZ
_has_mysqlZpyzor.engines.commonZ
BaseEnginerr`rkZDBHandleZhandlerrrr�<module>s<
h?


Zerion Mini Shell 1.0