3
 (ƒh­  ã               @   s2   d dl Z d dlmZ d dlZG dd„ dejƒZdS )é    N)Úbasec                   s4   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Z‡  ZS )	Ú
CursorTestc                sf   t t| ƒjƒ  | jd }| j|ddƒ |jƒ }|jdƒ |jƒ  tj	f | j
d Ž| _| j| jjƒ d S )Nr   Útestz$create table test (data varchar(10))zOinsert into test (data) values ('row1'), ('row2'), ('row3'), ('row4'), ('row5'))Úsuperr   ÚsetUpÚconnectionsZsafe_create_tableÚcursorÚexecuteÚcloseÚpymysqlÚconnectZ	databasesÚtest_connectionZ
addCleanup)ÚselfÚconnr   )Ú	__class__© ú>/tmp/pip-install-q3hcpn_q/PyMySQL/pymysql/tests/test_cursor.pyr      s    
zCursorTest.setUpc             C   s|   | j }|jtjjƒ}|jdƒ xt|ƒD ]\}}|dkr(P q(W ~| jƒ  |jƒ }|jdƒ | j|j	ƒ dƒ | j
|j	ƒ ƒ d S )Nz$select * from test as t1, test as t2é
   zselect 1é   )r   )r   r   r   ÚcursorsZSSCursorr	   Ú	enumerateÚsafe_gc_collectÚassertEqualÚfetchoneÚassertIsNone)r   r   r   ÚcounterÚrowÚc2r   r   r   Útest_cleanup_rows_unbuffered   s    

z'CursorTest.test_cleanup_rows_unbufferedc             C   s|   | j }|jtjjƒ}|jdƒ xt|ƒD ]\}}|dkr(P q(W ~| jƒ  |jƒ }|jdƒ | j|j	ƒ dƒ | j
|j	ƒ ƒ d S )Nz$select * from test as t1, test as t2r   zselect 1r   )r   )r   r   r   r   ÚCursorr	   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   Útest_cleanup_rows_buffered)   s    

z%CursorTest.test_cleanup_rows_bufferedc             C   s‚  | j }|jtjjƒ}tjjjdƒ}| j|dƒ | j|j	dƒddƒ tjjjdƒ}| j|dƒ | j|j	dƒddƒ tjjjdƒ}| j|d	ƒ | j|j	dƒddƒ tjjjd
ƒ}| j|d	ƒ | j|j	dƒddƒ t
dƒ}|jd|ƒ | j|jjdƒdƒ dd„ t
dƒD ƒ}|jd|ƒ | j|jjdƒdƒ |jdƒ z@d}| jtjjj|ƒƒ |j|ddgƒ | j|jjdƒdƒ W d |jdƒ X d S )Nz+INSERT INTO TEST (ID, NAME) VALUES (%s, %s)zerror parse %sé   Ú z+group 3 not blank, bug in RE_INSERT_VALUES?z5INSERT INTO TEST (ID, NAME) VALUES (%(id)s, %(name)s)zerror parse %(name)sz:INSERT INTO TEST (ID, NAME) VALUES (%(id_name)s, %(name)s)zerror parse %(id_name)szNINSERT INTO TEST (ID, NAME) VALUES (%(id_name)s, %(name)s) ON duplicate updatez ON duplicate updatez9group 3 not ON duplicate update, bug in RE_INSERT_VALUES?r   z#insert into test (data) values (%s)s   ,(7),(8),(9)z%execute many with %s not in one queryc             S   s   g | ]}d |i‘qS )Údatar   )Ú.0Úir   r   r   ú
<listcomp>Y   s    z/CursorTest.test_executemany.<locals>.<listcomp>z)insert into test (data) values (%(data)s)z+execute many with %(data)s not in one queryzc            CREATE TABLE percent_test (
                `A%` INTEGER,
                `B%` INTEGER)z7INSERT INTO percent_test (`A%%`, `B%%`) VALUES (%s, %s)é   é   é   s   (3, 4),(5, 6)z$executemany with %% not in one queryz!DROP TABLE IF EXISTS percent_test)r!   r'   )r(   r)   )r   r   r   r   r   ZRE_INSERT_VALUESÚmatchZassertIsNotNoner   ÚgroupÚrangeZexecutemanyZ
assertTrueZ	_executedÚendswithr	   )r   r   r   Úmr#   Z	data_dictÚqr   r   r   Útest_executemany>   s8    zCursorTest.test_executemany)Ú__name__Ú
__module__Ú__qualname__r   r   r    r0   Ú__classcell__r   r   )r   r   r      s   r   )ÚwarningsZpymysql.testsr   Zpymysql.cursorsr   ZPyMySQLTestCaser   r   r   r   r   Ú<module>   s   