
    Ng2
                     V    d dl mZmZmZmZmZ d dlmZ d dlm	Z	  G d de	          Z
dS )    )AnyDictIteratorListOptional)Document)
BaseLoaderc                       e Zd ZdZ	 	 	 ddededeee                  deee                  deeeef                  ddfd	Z	de
e         fd
ZdS )
TiDBLoaderzLoad documents from TiDB.Nconnection_stringquerypage_content_columnsmetadata_columnsengine_argsreturnc                 T    || _         || _        || _        ||ng | _        || _        dS )aT  Initialize TiDB document loader.

        Args:
            connection_string (str): The connection string for the TiDB database,
                format: "mysql+pymysql://root@127.0.0.1:4000/test".
            query: The query to run in TiDB.
            page_content_columns: Optional. Columns written to Document `page_content`,
                default(None) to all columns.
            metadata_columns: Optional. Columns written to Document `metadata`,
                default(None) to no columns.
            engine_args: Optional. Additional arguments to pass to sqlalchemy engine.
        N)r   r   r   r   r   )selfr   r   r   r   r   s         e/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/document_loaders/tidb.py__init__zTiDBLoader.__init__   s=    ( "3
$8!4D4P 0 0VX&    c              #   4   
K   ddl m} ddlm} ddlm}  | j        fi  j        pi }|                                5 }|	                     | j
                            }t          |                                          
|D ]v}
fdt          |          D             d                     fd                                D                       }fd j        D             }	t#          ||		          V  w	 d
d
d
           d
S # 1 swxY w Y   d
S )z*Lazy load TiDB data into document objects.r   )create_engine)Engine)textc                 (    i | ]\  }}|         |S  r   ).0indexvaluecolumn_namess      r   
<dictcomp>z(TiDBLoader.lazy_load.<locals>.<dictcomp>9   s1       3?5%L'  r   
c              3   L   K   | ]\  }}j         	|j         v | d| V  d S )Nz: )r   )r   kvr   s      r   	<genexpr>z'TiDBLoader.lazy_load.<locals>.<genexpr><   sV       ) )108D555 KKAKK 6555	) )r   c                 "    i | ]}||         S r   r   )r   colrow_datas     r   r!   z(TiDBLoader.lazy_load.<locals>.<dictcomp>B   s    PPP3C#PPPr   )page_contentmetadataN)
sqlalchemyr   sqlalchemy.enginer   sqlalchemy.sqlr   r   r   connectexecuter   listkeys	enumeratejoinitemsr   r   )r   r   r   r   engineconnresultrowr*   r+   r    r)   s   `         @@r   	lazy_loadzTiDBLoader.lazy_load%   s      	-,,,,,,,,,,,'''''' '"
 
'+'7'=2
 

 ^^ 	M\\$$tz"2"233F  ..L M M   CLS>>    $yy ) ) ) ) ( 0 0) ) )     QPPP$:OPPPL8LLLLLLLM	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   B>DDD)NNN)__name__
__module____qualname____doc__strr   r   r   r   r   r   r   r:   r   r   r   r   r      s        ## 590404' '' ' 'tCy1	'
 #49-' d38n-' 
' ' ' '4M8H- M M M M M Mr   r   N)typingr   r   r   r   r   langchain_core.documentsr   )langchain_community.document_loaders.baser	   r   r   r   r   <module>rC      s    6 6 6 6 6 6 6 6 6 6 6 6 6 6 - - - - - - @ @ @ @ @ @;M ;M ;M ;M ;M ;M ;M ;M ;M ;Mr   