U
    [e                     @   sv   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
eZG dd deZG dd de	ZG d	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                   @   s   e Zd ZdZdS )PyexcelSQLSkipRowExceptionzG
    Raised this exception to skipping a row
    while data import
    N)__name__
__module____qualname____doc__ r   r   j/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel_io/database/importers/sqlalchemy.pyr      s   r   c                   @   s2   e Zd ZdZdddZdd Zdd	 Zd
d ZdS )SQLTableWriterzWrite to a tableT  c                 K   s"   || _ d| _|| _|| _|| _d S )Nr   )_SQLTableWriter__auto_commit_SQLTableWriter__count_SQLTableWriter__bulk_sizeadapterimporter)selfr   r   auto_commitZ	bulk_sizekeywordsr   r   r   __init__   s
    zSQLTableWriter.__init__c                 C   s\   t |rttj nBt|}z| | W n* tk
rV   ttj	 t| Y nX d S N)
r   LOGwarning	constantsZMESSAGE_EMPTY_ARRAYr   
_write_rowr   infoZMESSAGE_IGNORE_ROW)r   array	new_arrayr   r   r   	write_row(   s    zSQLTableWriter.write_rowc           	      C   s   |}| j jr<g }t|D ]\}}|| j jkr|| q|}tt| j j|}d }| j jrf| j |}|d kr| j  }| j jD ]}t	||||  q| j
j| | jr| jtdkr|  jd7  _| j| j dkr| j
j  d S )Ninf   r   )r   Zcolumn_name_mapping_dict	enumerateappenddictzipZcolumn_namesZrow_initializertablesetattrr   sessionaddr   r   floatr   commit)	r   r   r   Zanother_new_arrayindexelementrowobjnamer   r   r   r   3   s(    
zSQLTableWriter._write_rowc                 C   s   | j r| jj  d S r   )r   r   r)   r,   r   r   r   r   closeK   s    zSQLTableWriter.closeN)Tr   )r   r   r	   r
   r   r    r   r3   r   r   r   r   r      s      
	r   c                   @   s*   e Zd ZdZd
ddZdd Zdd Zd	S )SQLBookWriterz.write data into database tables via sqlalchemyTc                 K   s   || _ || _d S r   )_SQLBookWriter__importer_SQLBookWriter__auto_commit)r   Zfile_content_r   r   r   r   r   r   S   s    zSQLBookWriter.__init__c                 C   s<   d }| j |}|r(t| j || jd}ntd| d |S )N)r   z*Sheet: %s does not match any given tables.z$Please be aware of case sensitivity.)r5   getr   r6   	Exception)r   Z
sheet_nameZsheet_writerr   r   r   r   create_sheetW   s      zSQLBookWriter.create_sheetc                 C   s   d S r   r   r2   r   r   r   r3   f   s    zSQLBookWriter.closeN)T)r   r   r	   r
   r   r:   r3   r   r   r   r   r4   P   s   
r4   )r
   loggingZpyexcel_io.constantsr   Zpyexcel_io.utilsr   r   Zpyexcel_io.plugin_apir   r   	getLoggerr   r   r9   r   r   r4   r   r   r   r   <module>   s   	
	4