o
    ;Di*                  
   @   s  d dl mZmZmZ d dlZd dlZd dlZd dlm	Z	 e
eZejZdddZdd Zdd	 Zd
d Zdd Zdd Zd\ZZZZdZz<zd dlZd dlZejeeeed W n eyo Z z
de ZW Y dZ[ndZ[ww W ejje ee!eddd Z"nejje ee!eddd Z"w dZ#z<zd dl$Z$d dlZe$jeeeed W n ey Z z
de Z#W Y dZ[ndZ[ww W ejje e#e!e#ddd Z%nejje e#e!e#ddd Z%w dZ&zSzd dl'Z'd dlZe'deeeef  W n ey Z z
de Z&W Y dZ[ndZ[ww W ejje e&e!e&ddd Z(dS W ejje e&e!e&ddd Z(dS ejje e&e!e&ddd Z(w )     )absolute_importprint_functiondivisionN)ieqc                 C   s  |d u r| }d}d}d}t |d}td tt | t|| td t || d tt | t|| td t || d tt | t|| td	 t || d tt | t|| td
 t t |dd| d tt | t|| td t t |dd| d tt | t|| td t t |d| d tt | tt |d| d S )N)foobarr   a   b   r   r
   r   r
   r   SELECT * FROM testzverify empty to start with...write some data and verify...testappend some data and verify...zoverwrite and verify...zcut, overwrite and verifyr   r   zcut, append and verifyztry a single rowr   )	etlfromdbdebuglookr   todbappenddbcuthead)	write_dboread_dboexpect_emptyexpectexpect_appendedactual r#   T/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/test/io/test_db_server.py	_test_dbo   sB   





r%   c                 C   s|   d}d}t | d}td t j|| d|d t|| tt | td t j|| d|d t|| tt | d S )Nr	   r   r   r   r   )schemar   )r   r   printr   r   r   r   )dbor&   r    r!   r"   r#   r#   r$   _test_with_schemaA   s   

r)   c                 C   sB   d}t | d}td t || d t|| tt | d S )N))nameid)u   Արամ Խաչատրյանr   )u   Johann Straußr   )u   Вагиф Сәмәдоғлу   )u	   章子怡   zSELECT * FROM test_unicoder   test_unicode)r   r   r'   r   r   r   )r(   r    r"   r#   r#   r$   _test_unicodeX   s   
r/   c                 C   sN   |   }|d |d |d |d |d |  |   d S )NSET SQL_MODE=ANSI_QUOTESDROP TABLE IF EXISTS test%CREATE TABLE test (foo TEXT, bar INT)!DROP TABLE IF EXISTS test_unicodez@CREATE TABLE test_unicode (name TEXT, id INT) CHARACTER SET utf8cursorexecuteclosecommitdbapi_connectionr5   r#   r#   r$   _setup_mysqlg   s   




r;   c                 C   sD   |   }|d |d |d |d |  |   d S )Nr1   r2   r3   z-CREATE TABLE test_unicode (name TEXT, id INT)r4   r9   r#   r#   r$   _setup_postgresqlu   s   



r<   c                 C   s   |   }|d d S )NzSET sql_mode = 'ANSI_QUOTES')r5   r6   )r:   connection_recordr5   r#   r#   r$   _setup_sqlalchemy_quotes   s   r>   )z	127.0.0.1petlr   r?   FhostuserpassworddatabasezSKIP pymysql tests: %s)reasonc                  C   sT  dd l } | j}|ttttd}t| t| t| | }t| |	  t| ddl
m} |dttttf }ddlm} ||dt | }t| |	  t| ddlm} ||d}	|	 }
t|
 |
	  t| |dttttf d	d
}||dt t| |  t|t |ttttdd}| d t| |	  d S )Nr   r@   create_enginezmysql+pymysql://%s:%s@%s/%slistenconnectsessionmakerbindr   )	echo_poolutf8)rA   rB   rC   rD   charsetr0   )pymysqlrJ   rA   rB   rC   rD   r;   r%   r5   r7   
sqlalchemyrG   sqlalchemy.eventrI   r>   sqlalchemy.ormrL   disposer)   r6   r/   )rR   rJ   r:   dbapi_cursorrG   sqlalchemy_enginerI   sqlalchemy_connectionrL   Sessionsqlalchemy_sessionsqlalchemy_engine2utf8_connectionr#   r#   r$   test_pymysql   s^   



r^   rA   rB   passwddbzSKIP MySQLdb tests: %sc                  C   s  dd l } | j}|ttttd}t| t| t| | }t| |	  t| ddl
m} |dttttf }ddlm} ||dt | }|d t| |	  t| ddlm} ||d	}	|	 }
t|
 |
	  t|t |ttttd
d}| d t| d S )Nr   r_   rF   zmysql+mysqldb://%s:%s@%s/%srH   rJ   r0   rK   rM   rP   )rA   rB   r`   ra   rQ   )MySQLdbrJ   rA   rB   rC   rD   r;   r%   r5   r7   rS   rG   rT   rI   r>   r6   rU   rL   r)   r/   )rb   rJ   r:   rW   rG   rX   rI   rY   rL   rZ   r[   r]   r#   r#   r$   test_mysqldb   sL   



rc   %host=%s dbname=%s user=%s password=%szSKIP psycopg2 tests: %sc                     s  dd l } dd l} | j| jj | j| jj | dttt	t
f  t  t  t    }t| |  t  ddlm} |dt	t
ttf }| }t| |  t  ddlm} ||d}| }t| |  t  fdd t d	 t  d S )
Nr   rd   rF   z!postgresql+psycopg2://%s:%s@%s/%srK   rM   c                      s    j ddS )N	arbitrary)r*   )r5   r#   r:   r#   r$   <lambda>C  s    z!test_postgresql.<locals>.<lambda>public)psycopg2psycopg2.extensions
extensionsregister_typeUNICODEUNICODEARRAYrJ   rA   rD   rB   rC   r<   r%   r5   r7   rS   rG   rU   rL   r)   r/   )ri   rW   rG   rX   rY   rL   rZ   r[   r#   rf   r$   test_postgresql  sD   




ro   )N))
__future__r   r   r   loggingpytestr?   r   petl.test.helpersr   	getLogger__name__loggerr   r%   r)   r/   r;   r<   r>   rA   rB   rC   rD   SKIP_PYMYSQLrR   rS   rJ   	Exceptionemarkskipifboolstrr^   SKIP_MYSQLDBrb   rc   SKIP_TEST_POSTGRESri   ro   r#   r#   r#   r$   <module>   s   

2
;
2
