
    Ef                         d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	  ej
        e          Z G d de          Z G d de	          Z G d	 d
e          ZdS )z
    pyexcel_io.database.sql
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    The lower level handler for database import and export

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
    N)is_empty_arrayswap_empty_string_for_none)IWriterISheetWriterc                       e Zd ZdZdS )PyexcelSQLSkipRowExceptionzG
    Raised this exception to skipping a row
    while data import
    N)__name__
__module____qualname____doc__     j/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel_io/database/importers/sqlalchemy.pyr   r      s         
 	Dr   r   c                   .    e Zd ZdZ	 d	dZd Zd Zd ZdS )
SQLTableWriterzWrite to a tableT  c                 L    || _         d| _        || _        || _        || _        d S )Nr   )_SQLTableWriter__auto_commit_SQLTableWriter__count_SQLTableWriter__bulk_sizeadapterimporter)selfr   r   auto_commit	bulk_sizekeywordss         r   __init__zSQLTableWriter.__init__   s-     )$ r   c                 X   t          |          r&t                              t          j                   d S t          |          }	 |                     |           d S # t          $ rB t                              t          j	                   t                              |           Y d S w xY wN)
r   LOGwarning	constantsMESSAGE_EMPTY_ARRAYr   
_write_rowr   infoMESSAGE_IGNORE_ROW)r   array	new_arrays      r   	write_rowzSQLTableWriter.write_row(   s    %   	$KK	5666662599I$	*****- $ $ $5666######$s   A AB)(B)c                    |}| j         j        r<g }t          |          D ](\  }}|| j         j        v r|                    |           )|}t	          t          | j         j        |                    }d }| j         j        r| j                             |          }|?| j                                         }| j         j        D ]}t          ||||                    | j
        j                            |           | j        r[| j        t          d          k    rE| xj        dz  c_        | j        | j        z  dk    r$| j
        j                                         d S d S d S d S )Ninf   r   )r   column_name_mapping_dict	enumerateappenddictzipcolumn_namesrow_initializertablesetattrr   sessionaddr   r   floatr   commit)	r   r'   r(   another_new_arrayindexelementrowobjnames	            r   r$   zSQLTableWriter._write_row3   sx   	<0 	* ""+I"6"6 6 6wDLAAA%,,W555)I3t|0)<<==<' 	4 ,..s33C;,$$&&C1 . .T3t9----!!#&&& 	/$"2eEll"B"BLLALL|d..!33%,,.....	/ 	/"B"B33r   c                 T    | j         r | j        j                                         d S d S r   )r   r   r6   r9   r   s    r   closezSQLTableWriter.closeK   s4     	+M!((*****	+ 	+r   N)Tr   )r	   r
   r   r   r   r)   r$   rB   r   r   r   r   r      sa         >B! ! ! !	$ 	$ 	$/ / /0+ + + + +r   r   c                   &    e Zd ZdZddZd Zd ZdS )SQLBookWriterz.write data into database tables via sqlalchemyTc                 "    || _         || _        d S r   )_SQLBookWriter__importer_SQLBookWriter__auto_commit)r   file_content_r   r   s        r   r   zSQLBookWriter.__init__S   s    &(r   c                     d }| j                             |          }|rt          | j         || j                  }nt	          d|z  dz             |S )N)r   z*Sheet: %s does not match any given tables.z$Please be aware of case sensitivity.)rF   getr   rG   	Exception)r   
sheet_namesheet_writerr   s       r   create_sheetzSQLBookWriter.create_sheetW   sr    /%%j11 	)d6H  LL <zI89  
 r   c                     d S r   r   rA   s    r   rB   zSQLBookWriter.closef   s    r   N)T)r	   r
   r   r   r   rO   rB   r   r   r   rD   rD   P   sL        88) ) ) )      r   rD   )r   loggingpyexcel_io.constantsr"   pyexcel_io.utilsr   r   pyexcel_io.plugin_apir   r   	getLoggerr	   r    rL   r   r   rD   r   r   r   <module>rV      s      ( ( ( ( ( ( G G G G G G G G 7 7 7 7 7 7 7 7g!!	 	 	 	 	 	 	 	1+ 1+ 1+ 1+ 1+\ 1+ 1+ 1+h    G     r   