File: //usr/lib/python3/dist-packages/trac/db/__pycache__/util.cpython-310.pyc
o
�k�`E � @ sN d dl Z d dlmZ e �de j�Zdd� ZG dd� de�ZG dd � d e�Z dS )
� N)�closingzA
'(?:[^']+|'')*' |
`(?:[^`]+|``)*` |
"(?:[^"]+|"")*" c C s dd� }t �|| �S )Nc S s | � d��dd�S )Nr �%z%%)�group�replace)�match� r �./usr/lib/python3/dist-packages/trac/db/util.py�repl s z sql_escape_percent.<locals>.repl)�_sql_escape_percent_re�sub)�sqlr r r r �sql_escape_percent s r
c @ sD e Zd ZdZddgZddd�Zdd� Zd d
� Zddd�Zd
d� Z dS )�IterableCursorz�Wrapper for DB-API cursor objects that makes the cursor iterable
and escapes all "%"s used inside literal strings with parameterized
queries.
Iteration will generate the rows of a SELECT query one by one.
�cursor�logNc C s || _ || _d S �N)r r )�selfr r r r r �__init__* s
zIterableCursor.__init__c C s t | j|�S r )�getattrr �r �namer r r �__getattr__. s zIterableCursor.__getattr__c c s � | j �� }|sd S |V qr )r �fetchone)r �rowr r r �__iter__1 s �
�zIterableCursor.__iter__c
C s� | j rO| j �d|� z0|r| j �d|� | j�t|�|�}n| j�|�}t| jdd �}|d ur8| j �dt|�� |W S tyN } z| j �d|� � d }~ww |rZ| j�t|�|�S | j�|�S )NzSQL: %s�args: %r�rowszprefetch: %d rowszexecute exception: %r)r �debugr �executer
r �len� Exception)r r �args�rr �er r r r 8 s&