403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python312/Lib/site-packages/pandas/tests/io/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python312/Lib/site-packages/pandas/tests/io/__pycache__/test_sql.cpython-312.pyc
�

0	�g�6��4�ddlmZddlZddlmZddlZddlmZmZmZmZddl	m
Z
ddlmZddl
Z
ddlmZddlZddlZddlZddlmZdd	lmZmZdd
lmZddlmcmZddlZ ddlm!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*ddl+m,Z-ddl.m/Z/m0Z0dd
l1m2Z2ddl3m4Z4ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<erddl=Z=ej|jd�Z@ej�d��ZBd�ZC�d1d�ZD�d1d�ZE�d1d�ZFd�ZG�d2d�ZH�d3d�ZI�d3d�ZJ�d4d�ZKd�ZL�d5d�ZM�d6d�ZNej�d��ZOej�d��ZPej�d ��ZQej�d!��ZRej�d"��ZSd#�ZTd$�ZU				�d7d&�ZV				�d8d'�ZWej�d(��ZXej�d)��ZYej�d*��ZZej�d+��Z[ej�d,��Z\ej�d-��Z]ej�d.��Z^ej�d/��Z_ej�d0��Z`ej�d1��Zaej�d2��Zbej�d3��Zcej�d4��Zdej�d5��Zeej�d6��Zfej�d7��Zgej�d8��Zhej�d9��Ziej�d:��Zjej�d;��Zkej�d<��Zlej�d=��Zmej�d>��Znej�d?��Zoej�d@��Zpej�dA��Zqej�dB��Zrej�dC��Zsej�dD��Ztej�dE��Zuej�dFej|j��G�ej�dHej|j��G�gZxej�dIej|j��G�ej�dJej|j��G�gZyej�dKej|j��G�ej�dLej|j��G�gZzej�dMej|j��G�ej�dNej|j��G�gZ{ej�dOej|j��G�ej�dPej|j��G�gZ|ej�dQej|j��G�ej�dRej|j��G�gZ}gdS�Z~gdT�ZgdU�Z�exe{ze~zZ�eye|zezZ�eze}ze�zZ�dVej�dWej|j��G�gZ�ej�dXej|j��G�ej�dYej|j��G�gZ�ej�dZej|j��G�ej�d[ej|j��G�gZ�e�d\gze�zZ�e�d]gze�zZ�e�d^gze�zZ�ej|�jd%e��d_��Z�ej|�jd%e��d`��Z�ej|�jd%e��da��Z�ej|�jd%e��db��Z�ej|�jd%e��ej|�jdcdddg�de���Z�ej|�jd%e��ej|�jdfdgdhg�di���Z�ej|�jd%e��dj��Z�ej|�jd%e��dk��Z�ej|�jd%e��dl��Z�ej|�jd%e��dm��Z�ej|�jd%e��dn��Z�ej|�jd%e��do��Z�ej|�jd%e��dp��Z�ej|�jd%e��dq��Z�ej|�jd%e��dr��Z�ej|�jd%ex�ds��Z�ej|�jd%e{�ej|�jdtdudvg�dw���Z�ej|�jd%e{�dx��Z�ej|�jd%e��dy��Z�ej|�jd%ex�dz��Z�ej|�jd%e{�d{��Z�d|�Z�d}�Z�d~�Z�d�Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��ej|�jd�gd���ej|�jd�e4�jfd�d�fe4�jfd�d�fe4jvd�d�fe4jxd�d�fg�d�����Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��ej|�jd�gd���d����Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��ej|�jd�de�e�e�e�d��g�d����Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�d��Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��ej|�jd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�e�e�j�e���j�d�k(rd�nd�fg�dĄ��Z�ej|�jd%e��ej|�jd�d�d�g�dȄ��Z�ej|�jd%e��dɄ�Z�e�j�dʫej|�jd%e��d˄��Z�ej|�jd%e��d̄�Z�ej|�jd%e��d̈́�Z�ej|�jd%e��d΄�Z�dτZ�e�j�d��dЄ�Z�e�j�d��dф�Z�d҄Z�dӄZ�dԄZ�ej|�jd%e��dՄ�Z�ej|�jd%e��dք�Z�ej|�jd%e��dׄ�Z�ej|�jd%e��d؄�Z�ej|�jd%e��dل�Z�ej|�jd%e��dڄ�Z�ej|�jd%e��dۄ�Z�ej|�jd%e��d܄�Z�ej|�jd%e��d݄�Z�ej|�jd%e��dބ�Z�ej|�jd%e{�ej|�jd�dd�gg�d���Z�ej|�jd%e{�d��Z�ej|�jd%e{�d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d��Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��d���Z�ej|�jd%e��ej|�jd�d�e�j�gid�e�j�gie�j�gd�gd��g�d�����Zej|�jd%e��d����Zej|�jd%e��d����Zej|�jd%e��d����Zej|�jd%e���d���Zej|�jd%e���d���Z�d��Z�d��Zej|�jd%e��ej|�j�d�d�dg��d����Zej|�jd%e��ej|�j�d�d�dg��d	����Z	ej|�jd%e��ej|�j�dg�d
���d����Z
ej��d9�d���Zej��d
���Zej|�jd%e���d���Z
ej|�jd%e��ej|�j�de�j�dg�ej|�j�d�d�dg��d�����Z�d��Z�d��Z�d��Z�d��Z�d��Z�d��Zej��d���Z�d��Zej|j��d���Zej|j��d���Z�d��Z�d��Zej|�j�d�d�d g��d!���Z�d"��Z�d#��Z�d$��Z�d%��Z �d&��Z!�d:�d'��Z"�d(��Z#�d)��Z$�d*��Z%�d+��Z&�d,��Z'�d-��Z(�d.��Z)�d/��Z*�d0��Z+y(;�)�annotationsN)�closing)�date�datetime�time�	timedelta)�StringIO��Path)�
TYPE_CHECKING)�lib)�pa_version_under13p0�pa_version_under14p1)�import_optional_dependency)
�	DataFrame�Index�
MultiIndex�Series�	Timestamp�concat�
date_range�isna�to_datetime�to_timedelta)�ArrowStringArray�StringArray)�Version)�sql)�SQLAlchemyEngine�SQLDatabase�SQLiteDatabase�
get_engine�pandasSQL_builder�read_sql_query�read_sql_tablez=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc�&�dddd�dddd�dd	d
d�d�S)Nz1SELECT * FROM iris WHERE Name=? AND SepalLength=?z7SELECT * FROM iris WHERE `Name`=%s AND `SepalLength`=%sz7SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%s)�sqlite�mysql�
postgresqlz]
                SELECT * FROM iris WHERE Name=:name AND SepalLength=:length
                zw
                SELECT * FROM iris WHERE
                `Name`=%(name)s AND `SepalLength`=%(length)s
                zw
                SELECT * FROM iris WHERE
                "Name"=%(name)s AND "SepalLength"=%(length)s
                z&SELECT * FROM iris WHERE Name LIKE '%'z(SELECT * FROM iris WHERE `Name` LIKE '%'z(SELECT * FROM iris WHERE "Name" LIKE '%')�read_parameters�read_named_parameters�read_no_parameters_with_percent�r-��:C:\Python312\Lib\site-packages\pandas/tests/io/test_sql.py�sql_stringsr0EsA��J�N�S�
����"
�?�?�F�,
�'�r.c���ddl}ddlm}m}m}m}m}m}t|j�td�k\r|n|}|�}|d||d|�|d|�|d|�|d|�|d	|d
���}	|	S)Nr)�Column�Double�Float�MetaData�String�Tablez2.0.0�iris�SepalLength�
SepalWidth�PetalLength�
PetalWidth�Name��)	�
sqlalchemyr2r3r4r5r6r7r�__version__)
r?r2r3r4r5r6r7�dtype�metadatar8s
          r/�iris_table_metadatarCbs�������j�4�4�5���9I�I�F�u�E��z�H�����}�e�$��|�U�#��}�e�$��|�U�#��v�v�c�{�#��D��Kr.c���d}|j�}|j|�|jdd��5}tj|�}t|�d}g}|D�cgc]<}t
|d�t
|d�t
|d�t
|d�|d	f��>}}|j||�ddd�|j�|j�ycc}w#1swY�/xYw)
Nz�CREATE TABLE iris (
            "SepalLength" REAL,
            "SepalWidth" REAL,
            "PetalLength" REAL,
            "PetalWidth" REAL,
            "Name" TEXT
        )�utf-8��newline�encodingz&INSERT INTO iris VALUES(?, ?, ?, ?, ?)r����)
�cursor�execute�open�csv�reader�next�float�executemany�close�commit)�conn�	iris_file�stmt�cur�csvfilerQ�records�rows        r/�create_and_load_iris_sqlite3r^{s���
�D��+�+�-�C��K�K���	����w��	7�'�7����G�$���V��7�����	
��
�c�!�f�
��c�!�f�
��c�!�f�
��c�!�f�
��A��
�	
��	
�	����g�&�#'�$�I�I�K��K�K�M��	
�
'�'�s�)C#� AC�!C#�C#�#C,c���d}|j�5}|j|�|jdd��5}tj|�}t|�d}|D�cgc]<}t
|d�t
|d�t
|d�t
|d�|d	f��>}}|j||�ddd�ddd�|j�ycc}w#1swY�'xYw#1swY�+xYw)
Nz�CREATE TABLE iris (
            "SepalLength" DOUBLE PRECISION,
            "SepalWidth" DOUBLE PRECISION,
            "PetalLength" DOUBLE PRECISION,
            "PetalWidth" DOUBLE PRECISION,
            "Name" TEXT
        )rErFz+INSERT INTO iris VALUES($1, $2, $3, $4, $5)rrIrJrKrL)	rMrNrOrPrQrRrSrTrV)rWrXrYrZr[rQr]r\s        r/�create_and_load_iris_postgresqlr`�s���
�D�
����+�#����D��
�^�^�D�7�^�
;�	+�w��Z�Z��(�F���L�@�D�"�	��
�#�a�&�M��#�a�&�M��#�a�&�M��#�a�&�M���F��	�G�	�
�O�O�D�'�*�!	+�+�(	�K�K�M��	�	+�	+��+�+�s5�%C&�'C�AC� C�4C&�C�C#	�C&�&C/c
���ddlm}t�}|jdd��5}t	j
|�}t
|�}|D�cgc]}tt||����}}||�j|�}	|j�5}
|j|
d��|j|
��|
j|	�ddd�ddd�ycc}w#1swY�xYw#1swYyxYw)Nr��insertrErFT��
checkfirst��bind)r?rcrCrOrPrQrR�dict�zip�values�begin�drop�createrN)rWrXrcr8r[rQ�headerr]�paramsrY�cons           r/�create_and_load_irisrq�s���!�� �D�	����w��	7��7����G�$���f���4:�;�S�$�s�6�3�'�(�;��;��d�|�"�"�6�*��
�Z�Z�\�	�S��I�I�c�d�I�+��K�K�S�K�!��K�K���	����<�	�	����s5�%C'�	C�%)C'�7C�C'�C'�C$	� C'�'C0c���d}t|tj�r"|j�}|j	|�ytdd��}|rQt||j�r;|j�5}|j	|�ddd�|j
�yddlm}||�}|j�5}|j	|�ddd�y#1swY�SxYw#1swYyxYw)Nz+CREATE VIEW iris_view AS SELECT * FROM iris�adbc_driver_manager.dbapi�ignore��errorsr��text)
�
isinstance�sqlite3�
ConnectionrMrNrrVr?rxrk)rWrYrZ�adbcrxrps      r/�create_and_load_iris_viewr}�s���8�D��$��*�*�+��k�k�m�����D��)�*E�h�W���J�t�T�_�_�5�����
"�#����D�!�
"��K�K�M�'���:�D�����
"�����D�!�
"�
"�
"�
"��
"�
"�s�4C�=C$�C!�$C-c��ddlm}m}m}m}m}m}m}m}|dk(r|n|}	|dk(r|n|}
|�}|d||d|�|d|	�|d|�|d|�|d	|�|d
|�|d|
�|d|�|d
|
��}|S)Nr)�TEXT�Booleanr2�DateTimer4�Integerr5r7r'�types�TextCol�DateCol�
IntDateCol�IntDateOnlyCol�FloatCol�IntCol�BoolCol�IntColWithNull�BoolColWithNull)	r?rr�r2r�r4r�r5r7)
�dialectrr�r2r�r4r�r5r7�	date_type�	bool_typerBr�s
             r/�types_table_metadatar��s���	�	�	� �8�+���I�"�h�.��G�I��z�H�����y�$���y�)�$��|�W�%����)��z�5�!��x��!��y�)�$����)�� �)�,�
�E��Lr.c�X�d}d}t|tj�r4|j�}|j	|�|j||�y|j�5}|j	|�|j||�ddd�|j
�y#1swY�xYw)Na�CREATE TABLE types (
                    "TextCol" TEXT,
                    "DateCol" TEXT,
                    "IntDateCol" INTEGER,
                    "IntDateOnlyCol" INTEGER,
                    "FloatCol" REAL,
                    "IntCol" INTEGER,
                    "BoolCol" INTEGER,
                    "IntColWithNull" INTEGER,
                    "BoolColWithNull" INTEGER
                )ze
                INSERT INTO types
                VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
                )ryrzr{rMrNrTrV)rW�
types_datarY�ins_stmtrZs     r/�create_and_load_types_sqlite3r��s���
�D��H�
�$��*�*�+��k�k�m�����D������*�-�
�[�[�]�	2�c��K�K����O�O�H�j�1�	2�	
���
�		2�	2�s�#$B � B)c��|j�5}d}|j|�d}|j||�ddd�|j�y#1swY�xYw)Na�CREATE TABLE types (
                        "TextCol" TEXT,
                        "DateCol" TIMESTAMP,
                        "IntDateCol" INTEGER,
                        "IntDateOnlyCol" INTEGER,
                        "FloatCol" DOUBLE PRECISION,
                        "IntCol" INTEGER,
                        "BoolCol" BOOLEAN,
                        "IntColWithNull" INTEGER,
                        "BoolColWithNull" BOOLEAN
                    )zy
                INSERT INTO types
                VALUES($1, $2::timestamp, $3, $4, $5, $6, $7, $8, $9)
                )rMrNrTrV)rWr�rZrYs    r/� create_and_load_types_postgresqlr�sY��	
����*�#�
��	���D����
	����j�)�'*�*	�K�K�M�+*�*�s�(A�Ac�0�ddlm}ddlm}t	|�}||�j|�}t
||�ri|j�5}|j�5|j|d��|j|��|j|�ddd�ddd�y|j�5|j|d��|j|��|j|�ddd�y#1swY�bxYw#1swYyxYw#1swYyxYw)Nrrb��EngineTrdrf)r?rc�sqlalchemy.enginer�r�rjry�connectrkrlrmrN)rWr�r�rcr�r�rYs       r/�create_and_load_typesr�5s���!�(� ��)�E��%�=���
�+�D��$���
�\�\�^�	#�t�����
#��
�
�4�D�
�1����$��'����T�"�
#�	#�	#��Z�Z�\�	��J�J�t��J�-��L�L�d�L�#��L�L���	�	�
#�
#��	#�	#��	�	�s0�D�7C4�D�47D�4C=	�9D�D	�Dc
���ddlm}m}m}m}m}ddlm}|�}|d||d|d����}ddidd	ig}	||�j|	�}
t||�ri|j�5}|j�5|j|d�
�|j|��|j|
�ddd�ddd�nO|j�5|j|d�
�|j|��|j|
�ddd�tdd
��tdd
��g}t!|d��S#1swY��xYw#1swY�<xYw#1swY�HxYw)Nr)r2r�r5r7rcr��datetz�
DateColWithTzT)�timezonez2000-01-01 00:00:00-08:00z2000-06-01 00:00:00-07:00rdrfz2000-01-01 08:00:00�UTC��tzz2000-06-01 07:00:00��name)r?r2r�r5r7rcr�r�rjryr�rkrlrmrNrr)rWr2r�r5r7rcr�rBr��datetz_datarY�
expected_datas            r/�create_and_load_postgres_datetzr�IsY����)��z�H�
�8�X�v�o�x�QU�?V�'W�
X�F�
�8�	
�
�8�	
�	�K��&�>� � ��-�D��$���
�\�\�^�	#�t�����
#����D�T��2��
�
�4�
�(����T�"�
#�	#�	#��Z�Z�\�	��K�K���K�.��M�M�t�M�$��L�L���	�	�'�E�2��'�E�2��M��-�o�6�6�'
#�
#��	#�	#��	�	�s0�/E
�7D>�7E
�7E�>E	�E
�
E�Ec��|jjdj}|jd}t|tj
�sJ�t
j|tgd�|jd���|jdvsJ�y)Nr��ffffff@g@gffffff�?皙�����?�Iris-setosa)�indexr�))��)�r�)�dtypes�iloc�type�
issubclass�np�floating�tm�assert_series_equalr�columns�shape)�frame�pytyper]s   r/�check_iris_framer�vst��
�\�\�
�
�q�
!�
&�
&�F�
�*�*�Q�-�C��f�b�k�k�*�*�*�����V�7�u�}�}�ST�
U���;�;�,�,�,�,r.c��d|��}tdd��}t|tj�r2|j	�}|j|�j
�dS|rTt||j�r>|j	�5}|j|�|j
�dcddd�Sddlm}ddl	m
}t|t�rR	||�}|j�5}|j|�j�cddd�|j�St||�r9|j�5}|j|�j�cddd�S|j|�j�S#1swYyxYw#1swYnxYw	|j�y#j�wxYw#1swYyxYw)Nz SELECT count(*) AS count_1 FROM rsrtrur)�
create_enginer�)rryrzr{rMrN�fetchoner?r�r�r��strr��exec_driver_sql�
scalar_one�dispose)rW�
table_namerYr|rZr�r��engines        r/�
count_rowsr��s���
-�j�\�:�D�%�&A�(�S�D��$��*�*�+��k�k�m���{�{�4� �)�)�+�A�.�.�	
�*�T�4�?�?�3�
�[�[�]�	%�c��K�K����<�<�>�!�$�	%�	%�	-�,��d�C� �
!�&�t�,���^�^�%�C���/�/��5�@�@�B�C�C���� �
��f�
%�����
?�4��+�+�D�1�<�<�>�
?�
?��'�'��-�8�8�:�:�%	%�	%��C�C��C���� ����� ��
?�
?�s<�$F�F1�*F�		F1�?G�F�F�F1�1G�Gc�.�|dddd�}t|�S)N�io�datarPziris.csvr
)�datapath�	iris_paths  r/r�r��s����v�u�j�9�I��	�?�r.c�2�dddddddddd�	dd	d
ddddddd�	gS)N�first�2000-01-03 00:00:00iw�i��2g333333$@rIF�	r�r�r�r�r�r�r�r�r��2000-01-04 00:00:00i'�Pi\�2r-r-r.r/r�r��sP���,�#�&�����$�
	
��,�$�&����"�#�
	
��r.c
�t�dddddddddd�	}t|�}||j�j|�S)Nr��int64rSr�)r�keys�astype)r�r��dfs   r/�types_data_framer��sN�����!����!�"�
�F�
�:�	�B�
�f�k�k�m��#�#�F�+�+r.c�,�gd�}gd�}t||��S)N)r��A�B�C�D))r�gN�\^�?g9\�x`|
@g%�TO׿g�(nI��)r�g�}�C��?�c�^�V��g~q"B�Ŀg����4�?)�2000-01-05 00:00:00gG�Ϳ��?�2r¹e�?g��>ݦ4�gё��R��?)�2000-01-06 00:00:00g�?{mX��?�$���?gnk3�A�m?g�
S���?�r��r�r�r�s  r/�test_frame1r��s��+�G��D�<�T�7�+�+r.c�,�gd�}gd�}t||��S)N)r�r�r�))r�i���gZ����)r�i��r�)r�i Nr�)r�i͏��r�r�r�r�s  r/�test_frame3r��s��!�G��D��T�7�+�+r.c��t|tj�r2|jd�}|j	�D�cgc]}|d��	c}Stdd��}|r�t||j�rtg}|j
�j�j�}|D]?}|d|dD]0}|d|d	D]!}|d
dk(s�|d}	|j|	��#�2�A|Sdd
l
m}
|
|�j�Scc}w)Nz0SELECT name FROM sqlite_master WHERE type='view'rrsrtru�catalog_name�catalog_db_schemas�db_schema_name�db_schema_tables�
table_type�viewr���inspect)
ryrzr{rN�fetchallr�adbc_get_objects�read_all�	to_pylist�appendr?r��get_view_names)rW�cr�r|�results�info�catalog�schema�table�	view_namer�s           r/�
get_all_viewsr��s
���$��*�*�+��L�L�K�L��$%�J�J�L�1�D��Q��1�1�)�*E�h�W���J�t�T�_�_�5��G��(�(�*�3�3�5�?�?�A�D��
6����'�%�&:�;�6�F��+�,�!'�(:�!;�6�� ��.�&�8�(-�l�(;�I�#�N�N�9�5�6�6�
6��N�*��4�=�/�/�1�1��'2s�Dc��t|tj�r2|jd�}|j	�D�cgc]}|d��	c}Stdd��}|r�t||j�rjg}|j
�j�j�}|D]5}|dD]+}|dD]!}|dd	k(s�|d
}|j|��#�-�7|Sddl
m}	|	|�j�Scc}w)Nz1SELECT name FROM sqlite_master WHERE type='table'rrsrtrur�r�r�r�r�r�)
ryrzr{rNr�rr�r�r�r�r?r��get_table_names)
rWr�r�r|r�r�r�r�r�r�s
          r/�get_all_tablesrs����$��*�*�+��L�L�L�M��&'�j�j�l�3�U��a��3�3�)�*E�h�W���J�t�T�_�_�5��G��(�(�*�3�3�5�?�?�A�D��
7��%�&:�;�7�F�!'�(:�!;�7�� ��.�'�9�).�|�)<�J�#�N�N�:�6�7�7�
7��N�*��4�=�0�0�2�2��%4s�C8rWc�(�t|tj�r8|jdt	j
|����|j
�ytdd��}|rEt||j�r/|j�5}|jd|�d��ddd�y|j�5}t	j|�5}|j|�ddd�ddd�y#1swYyxYw#1swY�xYw#1swYyxYw)NzDROP TABLE IF EXISTS rsrtruzDROP TABLE IF EXISTS "�")ryrzr{rNr�_get_valid_sqlite_namerVrrMrkr �
drop_table)r�rWr|rZrp�dbs      r/rr0s����$��*�*�+����,�S�-G�-G�
�-S�,T�U�V����
�*�*E�h�W���J�t�T�_�_�5�����
D�#����4�Z�L��B�C�
D�
D�����
.���_�_�S�)�.�R��M�M�*�-�.�
.�
.�
D�
D��.�.��
.�
.�s0�C0�7D�
C<�D�0C9�<D	�D�Dc�d�ddl}t|tj�r8|j	dtj|����|j�ytdd��}|rEt||j�r/|j�5}|j	d|�d��ddd�y|jjjj|�}|jd|���}|j�5}|j	|�ddd�y#1swYyxYw#1swYyxYw)NrzDROP VIEW IF EXISTS rsrtruzDROP VIEW IF EXISTS "r)r?ryrzr{rNrrrVrrMr�r��identifier_preparer�quote_identifierrxrk)r�rWr?r|rZ�quoted_viewrYrps        r/�	drop_viewrCs
����$��*�*�+����+�C�,F�,F�y�,Q�+R�S�T����
�)�*E�h�W���J�t�T�_�_�5�����
B�#����3�I�;�a�@�A�
B�
B��+�+�-�-�A�A�R�R���K�#�:�?�?�%9�+��#G�H�D�����
"�����D�!�
"�
"�
B�
B��
"�
"�s�D�?D&�D#�&D/c#�K�tjd�}tjd�}|jdd|jjj
i|jj��}|��t|�D]}t||��t|�D]}t||��|j�y�w)Nr?�pymysqlz*mysql+pymysql://root@localhost:3306/pandas�client_flag)�connect_args�	poolclass)
�pytest�importorskipr��	constants�CLIENT�MULTI_STATEMENTS�pool�NullPoolr�rrrr�)r?rr�r��tbls     r/�mysql_pymysql_enginerZs������$�$�\�2�J��!�!�)�,�G�
%�Z�
%�
%�4�#�W�%6�%6�%=�%=�%N�%N�O��/�/�*�*��F�
�L��f�%� ���$��� ��f�%� ���3��� �
�N�N��s�CCc#�BK�t||�t|�|��y�w�N�rqr})rr�s  r/�mysql_pymysql_engine_irisrks �����-�y�9��2�3�
����c#�.K�t||d�|��y�w)Nr(�r�)rr�s  r/�mysql_pymysql_engine_typesr"rs�����.�
�G�D�
����c#�^K�|j�5}|��ddd�y#1swYyxYw�wr�r�)rrWs  r/�mysql_pymysql_connr&xs-����	�	%�	%�	'��4��
������-�!�	-�*�-c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)rrWs  r/�mysql_pymysql_conn_irisr)~s-����	"�	*�	*�	,����
����r'c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)r"rWs  r/�mysql_pymysql_conn_typesr+��-����	#�	+�	+�	-����
����r'c#�HK�tjd�}tjd�|jd|jj��}|��t|�D]}t
||��t|�D]}t||��|j�y�w)Nr?�psycopg2z=postgresql+psycopg2://postgres:postgres@localhost:5432/pandas�r�
rrr�rrr�rrrr�)r?r�r�rs    r/�postgresql_psycopg2_enginer1�s������$�$�\�2�J�
���
�#�
%�Z�
%�
%�G��/�/�*�*��F��L��f�%� ���$��� ��f�%� ���3��� �
�N�N��s�B B"c#�BK�t||�t|�|��y�wrr)r1r�s  r/�postgresql_psycopg2_engine_irisr3�s �����3�Y�?��8�9�
$�$�rc#�.K�t||d�|��y�w)N�postgresr!)r1r�s  r/� postgresql_psycopg2_engine_typesr6�s�����4�j�*�M�
$�$�r#c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)r1rWs  r/�postgresql_psycopg2_connr8�r,r'c#�*K�tjd�ddlm}d}|j	|�5}|��t|�D]}t
||��t|�D]}t||��|j�ddd�y#1swYyxYw�w)N�adbc_driver_postgresqlr��dbapiz4postgresql://postgres:postgres@localhost:5432/pandas)
rrr:r<r�r�rrrrV)r<�urirWr�rs     r/�postgresql_adbc_connr>�s�����
���0�1�,�
@�C�	���s�	��t��
�!�$�'�	"�D��d�D�!�	"�!�$�'�	"�C��s�D�!�	"����
�
���s�/B�A
B�>	B�B�Bc#�*K�ddl}|}	|jd�	|jd�|��y#|j$r|j�t	||�Y�DwxYw#|j$r|j�t|�Y�bwxYw�w�Nrr8�	iris_view)�adbc_driver_manager�adbc_get_table_schema�ProgrammingError�rollbackr`r})r>r��mgrrWs    r/�postgresql_adbc_irisrG�s�����%��D�9��"�"�6�*�(��"�"�;�/��J�����9��
�
��'��i�8�9��
���(��
�
��!�$�'�(��B�B�2�A#�B�+A �B�A � B�#*B�
B�B�Bc#�K�ddl}|}	|jd�|��y#|j$rK|j�|D�cgc]}t	|j����ncc}w}}t
||�Y�^wxYw�w)Nrr�)rBrCrDrE�tuplerjr�)r>r�rFrW�entry�new_datas      r/�postgresql_adbc_typesrM�sr����%��D�9��"�"�7�+��J��
���9��
�
��7A�B�e�E�%�,�,�.�)�B��B��B�(��x�8�	9�s1�A=� �A=�#A:� A$�#A:�7A=�9A:�:A=c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)r3rWs  r/�postgresql_psycopg2_conn_irisrO�s-����	(�	0�	0�	2��d��
����r'c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)r6rWs  r/�postgresql_psycopg2_conn_typesrQ�s-����	)�	1�	1�	3��t��
����r'c#�K�tjd�tj�5}d|����ddd�y#1swYyxYw�w)Nr?�
sqlite:///)rrr��ensure_cleanr�s r/�
sqlite_strrU�sA����
����%�	���	�"�d��4�&�!�!�"�"�"�s�*A	�=�	A	�A�A	c#�K�tjd�}|j||jj��}|��t|�D]}t
||��t|�D]}t||��|j�y�w)Nr?r/r0)rUr?r�r�rs     r/�
sqlite_enginerW�s�����$�$�\�2�J�
%�Z�
%�
%�j�J�O�O�<T�<T�
U�F�
�L��f�%� ���$��� ��f�%� ���3��� �
�N�N��s�BB
c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)rWrWs  r/�sqlite_connrY�s-����	�	�	�	 ��D��
����r'c��tjd�}|j|�}t||�t	|�|j�|S)Nr?)rrr�rqr}r�)rUr�r?r�s    r/�sqlite_str_irisr[sF���$�$�\�2�J�
%�Z�
%�
%�j�
1�F����+��f�%�
�N�N���r.c#�BK�t||�t|�|��y�wrr)rWr�s  r/�sqlite_engine_irisr]s������	�2��m�,�
��rc#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)r]rWs  r/�sqlite_conn_irisr_s-����	�	#�	#�	%����
����r'c��tjd�}|j|�}t||d�|j	�|S)Nr?r')rrr�r�r�)rUr�r?r�s    r/�sqlite_str_typesras@���$�$�\�2�J�
%�Z�
%�
%�j�
1�F��&�*�h�7�
�N�N���r.c#�.K�t||d�|��y�w)Nr'r!)rWr�s  r/�sqlite_engine_typesrc%s�����-��X�>�
��r#c#�^K�|j�5}|��ddd�y#1swYyxYw�wrr%)rcrWs  r/�sqlite_conn_typesre+s-����	�	$�	$�	&��$��
����r'c#�K�tjd�ddlm}t	j
�5}d|��}|j
|�5}|��t|�D]}t||��t|�D]}t||��|j�ddd�ddd�y#1swY�xYw#1swYyxYw�w)N�adbc_driver_sqliterr;zfile:)rrrgr<r�rTr�r�rrrrV)r<r�r=rWr�rs      r/�sqlite_adbc_connrh1s�����
���,�-�(�	���	��d��d�V�n��
�]�]�3�
�	�4��J�%�d�+�
&���$��%�
&�%�d�+�
&���3��%�
&��K�K�M�
	���	�	����s5�0B?�B3�	A
B'�B3�	B?�'B0	�,B3�3B<�8B?c#�*K�ddl}|}	|jd�	|jd�|��y#|j$r|j�t	||�Y�DwxYw#|j$r|j�t|�Y�bwxYw�wr@)rBrCrDrEr^r})rhr�rFrWs    r/�sqlite_adbc_irisrjAs�����%��D�6��"�"�6�*�(��"�"�;�/��J�����6��
�
��$�T�9�5�6��
���(��
�
��!�$�'�(�rHc#�vK�ddl}|}	|jd�|��y#|j$r�|j�g}|D]Q}t	|d�|d<|d�t	|d�|d<|jt
|j����St||�|j�Y��wxYw�w)Nrr�r�r�)
rBrCrDrE�intr�rJrjr�rV)rhr�rFrWrLrKs      r/�sqlite_adbc_typesrmSs�����%��D���"�"�7�+��J�����
��
�
�����	3�E�"�5��#3�4�E�)���&�'�3�+.�u�5F�/G�+H��'�(��O�O�E�%�,�,�.�1�2�		3�	&�d�H�5����
�
�s&�B9� �B9�BB6�3B9�5B6�6B9c#�K�tjtjd��5}|5}|��ddd�ddd�y#1swY�xYw#1swYyxYw�w)N�:memory:)�
contextlibrrzr���closing_connrWs  r/�sqlite_buildinrsisW����	�	�	�G�O�O�J�7�	8��L�
�	�T��J�	���	�	����s1�)A�A�A�A�	A�A
	�	A�A�Ac#�BK�t||�t|�|��y�wr)r^r})rsr�s  r/�sqlite_buildin_irisrups���� ���;��n�-�
��rc#�K�|D�cgc]}t|j����}}t||�|��ycc}w�wr)rJrjr�)rsr�rKs   r/�sqlite_buildin_typesrwws:����5?�@�E�%�����'�@�J�@�!�.�*�=�
���A�s�?� :�?r)�marksr&rr)r"r+r1r8r3rOr6rQ)rWrYrU)r]r_r[)rcrerarhr>rGrjrMrmrsrurwc�P�|j|�}|jd|dd��y)N�testr�F�r�rp�	if_existsr�)�getfixturevalue�to_sql)rWr��requests   r/�test_dataframe_to_sqlr��s+���"�"�4�(�D����F�����Nr.c���|dk(r:|jjtjj	dd���|j|�}|jdd}|jd|dd�	�y)
Nr>z7postgres ADBC driver cannot insert index with null typeT��reason�strictrrzr�Fr{)�node�
add_markerr�mark�xfailr}r�r~)rWr�r�empty_dfs    r/�test_dataframe_to_sql_emptyr��sr���%�%�������K�K���P��
�
�	
��"�"�4�(�D������#�H��O�O��T�X�U�O�Kr.c��tjd�ttjdgd��tjtddd�gd��tjt
ddd�gd��tjtd�gd��tjd	gd
��d��}d|vr,|d
k(r|jdg��}tr	t}d}n
d}d}nt}d}|j|�}tj||d��5|jd|dd��ddd�y#1swYyxYw)N�pyarrowrIz
int8[pyarrow]�rA���timestamp[ns][pyarrow]zdate32[day][pyarrow]zduration[ns][pyarrow]�azstring[pyarrow])rlrrr�stringr|rhrr�zis_sparse is deprecated�zthe 'timedelta'F)�match�check_stacklevel�
test_arrow�replacer{)rrr�pd�arrayrrrrlr�DeprecationWarning�UserWarningr}r��assert_produces_warningr~)rWrr��exp_warning�msgs     r/�"test_dataframe_to_sql_arrow_dtypesr��s&�����	�"�	��8�8�Q�C��7�����$��1�%�&�.F���H�H�d�4��A�.�/�7M�N����9�Q�<�.�8O�P��h�h��u�,=�>�	
�

�B���~��%�%����+���/�B��,�K�+�C��K��C�!�����"�"�4�(�D�	�	#�	#�K�s�U�	S�Q�
�	�	�|���%�	�P�Q�Q�Q�s�D4�4D=c
���tjd�tdtjtddd�|gd��i�}|j
|�}|jd|dd	�
�y)Nr�rr�rIr�r�r�r�Fr{)rrrr�r�rr}r~)rWr�
nulls_fixturer�s    r/�*test_dataframe_to_sql_arrow_dtypes_missingr�si�����	�"�	������$��1�%�}�5�=U��	
�
�B��"�"�4�(�D��I�I�<�T�Y�e�I�Lr.�method�multic�t�|dk(r>d|vr:|jjtjj	dd���|j|�}t
|d��5}|j|d|��|jd�sJ�	ddd�t|d�t|�k(sJ�y#1swY�$xYw)	Nr�r|z)'method' not implemented for ADBC driversTr���need_transaction�
test_frame�r�)r�r�rr�r�r}r#r~�	has_tabler��len)rWr�r�r�	pandasSQLs     r/�test_to_sqlr�s������V�t�^�������K�K���B�4�
�
�	
��"�"�4�(�D�	�4�$�	7�1�9�����l�6��B��"�"�<�0�0�0�1��d�L�)�S��-=�=�=�=�1�1�s�"(B.�.B7zmode, num_row_coef)r�rI)r�rJc��|j|�}t|d��5}|j|dd��|j|d|��|jd�sJ�	ddd�t	|d�|t|�zk(sJ�y#1swY�'xYw)NTr�r��fail�r|�r}r#r~r�r�r�)rW�mode�num_row_coefr�rr�s      r/�test_to_sql_existr�+s����"�"�4�(�D�	�4�$�	7�1�9�����l�f��E�����l�d��C��"�"�<�0�0�0�1��d�L�)�\�C��<L�-L�L�L�L�	1�1�s�<B�Bc�D�|j|�}t|d��5}|j|dd��|jd�sJ�d}t	j
t|��5|j|dd��ddd�ddd�y#1swY�xYw#1swYyxYw)NTr�r�r�r�z!Table 'test_frame' already exists�r�)r}r#r~r�r�raises�
ValueError)rWr�rr�r�s     r/�test_to_sql_exist_failr�6s����"�"�4�(�D�	�4�$�	7�J�9�����l�f��E��"�"�<�0�0�0�1��
�]�]�:�S�
1�	J����[�,�&��I�	J�J�J�
	J�	J��J�J�s$�AB�$B
�9B�
B	�B�Bc��|j|�}td|�}t|�tjd|�}t|�tjd|�}|j
dk(sJ�d|jvsJ�y)N�SELECT * FROM iris�SELECT * FROM iris where 0=1�rr�r:)r}r$r�r��read_sqlr�r��rWr�
iris_frames   r/�test_read_iris_queryr�Bsy���"�"�4�(�D�� 4�d�;�J��Z� ����1�4�8�J��Z� ����;�T�B�J����v�%�%�%��:�-�-�-�-�-r.c���d|vr:|jjtjj	dd���|j|�}t
td|d���}t|�t
tjd|d���}t|�t
tjd|d���}|jd	k(sJ�d
|jvsJ�y)Nr|�,'chunksize' not implemented for ADBC driversTr�r����	chunksizer�r�r:)
r�r�rr�r�r}rr$r�r�r�r�r�r�s   r/�test_read_iris_query_chunksizer�Ns���
��~�������K�K���E��
�
�	
��"�"�4�(�D���';�T�Q�O�P�J��Z� �����$8�$�!�L�M�J��Z� �����$B�D�TU�V�W�J����v�%�%�%��:�-�-�-�-�-r.c��d|vr:|jjtjj	dd���|j|�}ddlm}m}m	}m
}|�}t|t�r||�n|}|d||��}t||�|d	d
d���}	t|	�t|t�r|j�yy)
Nr|r�Tr�r)r5r7r��selectr8)�
autoload_withr�r��r��length�ro)r�r�rr�r�r}r?r5r7r�r�ryr�r$r�r�)
rWrr5r7r�r�rB�autoload_conr8r�s
          r/�.test_read_iris_query_expression_with_parameterr�as���
��~�������K�K���E��
�
�	
��"�"�4�(�D����z�H�*4�T�3�*?�=��&�T�L�����>�D���t��d�M�S�#I��J��Z� ��$�������r.c�4�d|vr:|jjtjj	dd���|dj�D]\}}||vs�nt
d|�d���|j|�}t||d�	�}t|�y)
Nr|r�Tr�r*zNo part of z( found in sql_strings['read_parameters']�r�r�r�)
r�r�rr�r��items�KeyErrorr}r$r�)rWrr0r�queryr�s      r/�*test_read_iris_query_string_with_parameterr�}s���
��~�������K�K���E��
�
�	
�!�!2�3�9�9�;�U�	��E�
��:��U���T�F�*R�S�T�T��"�"�4�(�D���t�4H�I�J��Z� r.c��|j|�}td|�}t|�tjd|�}t|�y)Nr8)r}r%r�r�r�r�s   r/�test_read_iris_tabler��s@���"�"�4�(�D����-�J��Z� ����V�T�*�J��Z� r.c�<�d|vr9|jjtjj	d���|j|�}t
td|d���}t|�t
tjd|d���}t|�y)Nr|�+chunksize argument NotImplemented with ADBC�r�r8r�r�)r�r�rr�r�r}rr%r�r�r�r�s   r/�test_read_iris_table_chunksizer��s}��
��~�������K�K���%R��S�	
��"�"�4�(�D���v�t�q�A�B�J��Z� �����F�D�A�>�?�J��Z� r.c���|j|�}g��fd�}t|d��5}|j|d|��|jd�sJ�	ddd��dgk(sJ�t	|d�t|�k(sJ�y#1swY�,xYw)Nc	�����jd�|D�cgc]}tt||����}}|j|jj�|�ycc}w)NrI)r�rhrirNr�rc)�pd_tablerWr��	data_iterr]r��checks      �r/�samplez$test_to_sql_callable.<locals>.sample�sL���
���Q��09�:���S��s�^�$�:��:����X�^�^�*�*�,�d�3��;s�A Tr�r�r�rIr�)rWr�rr�r�r�s     @r/�test_to_sql_callabler��s�����"�"�4�(�D��E�4�

�4�$�	7�1�9�����l�6��B��"�"�<�0�0�0�1��Q�C�<��<��d�L�)�S��-=�=�=�=�	1�1�s�(A;�;Bc���|}|dk(r/|jtjjd���|j	|�}tjd|�}t|jjjtj�sJ�t|jjjtj�sJ�d|vr:t|jjjtj �s<J�t|jjjtj�sJ�t|j"jjtj�sJ�d|vr1t|j$jjt&�sJ�yt|j$jjtj�sJ�y)Nrw�;sqlite_buildin connection does not implement read_sql_tabler�r�r))�applymarkerrr�r�r}rr%r�r�rAr�r�r�r��integerr��bool_r�r��object�rWr�	conn_namer�s    r/�test_default_type_conversionr��sn���I��*�*�����K�K���T�
�
�	
��"�"�4�(�D�	�	�	�G�T�	*�B��b�k�k�'�'�,�,�b�k�k�:�:�:��b�i�i�o�o�*�*�B�J�J�7�7�7��y� ��"�*�*�*�*�/�/����:�:�:��"�*�*�*�*�/�/����<�<�<��b�'�'�-�-�2�2�B�K�K�@�@�@��y� ��"�,�,�2�2�7�7��@�@�@��"�,�,�2�2�7�7����E�E�Er.c��|j|�}ddlm}ddlm}tgd�gd�d��}|j
d|d�	�d
}||�}t||�rD|j�5}|j�5|j|�ddd�ddd�n*|j�5|j|�ddd�tjd|�}tj||�tjd|�}tj||�y#1swY��xYw#1swY�nxYw#1swY�zxYw)Nrrwr��rIrJrK�皙�����?r��333333�?�r��br�F�r�rpr�z}DROP PROCEDURE IF EXISTS get_testdb;

    CREATE PROCEDURE get_testdb ()

    BEGIN
        SELECT * FROM test_frame;
    ENDzCALL get_testdb();)r}r?rxr�r�rr~ryr�rkrNrr$r��assert_frame_equalr�)	rWrrxr�r��proc�engine_conn�res1�res2s	         r/�test_read_procedurer��s���"�"�4�(�D�
 �(�	���9�	:�B��I�I�<�T��I�7��D���:�D��$���
�\�\�^�	*�{��"�"�$�
*��#�#�D�)�
*�	*�	*��Z�Z�\�	��L�L���	����2�D�9�D����"�d�#��<�<�,�d�3�D����"�d�#�
*�
*��	*�	*��	�	�s0�*D-�;D!�
D-�.D9�!D*	�&D-�-D6�9E�expected_countrJzSuccess!c����fd�}|j|�}tddgddgddgd��}|jd	|d
|��}��|�	J�|�k(sJ�tjd	|�}tj||�y)Nc	����|j}|j�5}t�}tj|�}|j|�|j
d�dj|D�cgc]}d|�d���
c}�}	|jr|j�d|j��}
n|j}
d|
�d|	�d�}|j||��ddd��Scc}w#1swY�SxYw)	Nrz, r�.zCOPY z (z) FROM STDIN WITH CSV)r�file)�
connectionrMr	rP�writer�	writerows�seek�joinr�r��copy_expert)
r�rWr�r��
dbapi_connrZ�s_bufr��kr�r��	sql_queryr�s
            �r/�psql_insert_copyzBtest_copy_from_callable_insertion_method.<locals>.psql_insert_copys�����_�_�
�
�
�
�
 �
	7�C��J�E��Z�Z��&�F����Y�'��J�J�q�M��i�i�4� 8�a�1�Q�C�q�� 8�9�G��|�|� %���~�Q�u�z�z�l�;�
�"�Z�Z�
��
�|�2�g�Y�6K�L�I��O�O�	��O�6�
	7����!9�

	7���s�AC"�/
C
�<AC"�C"�"C,rIrJr�r�r��n��col1�col2�col3r�F)r�rpr�r��r}rr~rr%r�r�)rWr�rr�expected�result_count�results `     r/�(test_copy_from_callable_insertion_methodr�s�����&�"�"�4�(�D��1�a�&�3��*�s�C�j�Q�R�H��?�?�
�t�5�9I�#��L����#�#�#��~�-�-�-�
�
�
��d�
3�F����&�(�+r.c�<��|j|�}ddlm�ddlm}ddlm}�fd�}|d�}t||�rD|j�5}|j�5|j|�ddd�ddd�n*|j�5|j|�ddd�tgd�gtd��	�}|jd
|dd�
�tgd�gtd��	�}|jd
|dd|��}	tjd
|�}
t!j"|
|�|	dk(sJ�tj$|d��5}|j'd
�ddd�y#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)Nrrbr�rwc	����|D�cgc]}tt||����}}�|j�j|�j	dg��}|j|�}|jScc}w)Nr�)�index_elements)rhrir�rj�on_conflict_do_nothingrN�rowcount�	r�rWr�r�r]r�rYrrcs	        �r/�insert_on_conflictzHtest_insertion_method_on_conflict_do_nothing.<locals>.insert_on_conflict/sj���09�:���S��s�^�$�:��:��5�;�;��
�V�D�\�
#�
#�C�5�
#�
9�	
�
���d�#�������;s�A3zx
    CREATE TABLE test_insert_conflict (
        a  integer PRIMARY KEY,
        b  numeric,
        c  text
    );
    �rI�������@r��abcr��test_insert_conflictr�Fr{�rIg������	@r��r�rpr�r|r�Tr�)r}�sqlalchemy.dialects.postgresqlrcr�r��sqlalchemy.sqlrxryr�rkrNr�listr~rr%r�r�r r)
rWrr�rxr�
create_sqlrpr�	df_insert�insertedrr�rcs
            @r/�,test_insertion_method_on_conflict_do_nothingr&&s�����"�"�4�(�D�5�(�#���	��J��$���
�\�\�^�	(�s�����
(����J�'�
(�	(�	(��Z�Z�\�	%��L�L��$�	%��-��$�u�+�>�H��O�O�
#�������=�/�4��;�?�I����
#����!� ��H��
�
� 6��
=�F����&�(�+��q�=��=�

�����	5�5�����3�4�5�5�1
(�
(��	(�	(��	%�	%��*5�5��<�E:�E.�1E:�F�F�.E7	�3E:�:F�F�Fc�T�d|vsd|vr/|jtjjd���|j	|�}tgd�gd�gt
d���}|jd	|d
dd�
�tjd	|d��}tj||�y)Nr'r(z2test for public schema only specific to postgresqlr�r)rJg������@r�rr��test_public_schemar�F�public)r�rpr|r�r��r�)r�rr�r�r}rr"r~rr%r�r�)rWr�	test_data�df_outs    r/�test_to_sql_on_public_schemar.`s����4��7�d�?�����K�K���K�
�
�	
��"�"�4�(�D��=�-�8�$�u�+�N�I�
���
!��������
�
� 4�d�8�
L�F����)�V�,r.c�<��|j|�}ddlm�ddlm}ddlm}�fd�}|d�}t||�rD|j�5}|j�5|j|�ddd�ddd�n*|j�5|j|�ddd�tgd�gtd��	�}|jd
|dd�
�tgd�gtd��	�}|jd
|dd|��}	tjd
|�}
t!j"|
|�|	dk(sJ�tj$|d��5}|j'd
�ddd�y#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)Nrrbr�rwc	�D��|D�cgc]}tt||����}}�|j�j|�}|j	|j
j|j
j��}|j|�}|jScc}w)N)r�r�)
rhrir�rj�on_duplicate_key_updater%r�r�rNrrs	        �r/rzDtest_insertion_method_on_conflict_update.<locals>.insert_on_conflict�s|���09�:���S��s�^�$�:��:��e�k�k�"�)�)�$�/���+�+�d�m�m�o�o������+�Q�����d�#�������	;s�Bzv
    CREATE TABLE test_insert_conflict (
        a INT PRIMARY KEY,
        b FLOAT,
        c VARCHAR(10)
    );
    rrr�rr�Fr{rrrJTr�)r}�sqlalchemy.dialects.mysqlrcr�r�r!rxryr�rkrNrr"r~rr%r�r�r r)
rWrr�rxrr#rpr�rr%rr�rcs
            @r/�(test_insertion_method_on_conflict_updater3xs�����"�"�4�(�D�0�(�#���	��J��$���
�\�\�^�	(�s�����
(����J�'�
(�	(�	(��Z�Z�\�	%��L�L��$�	%�
�M�?�D��K�	8�B��I�I�)�t�x�u�I�U��-��$�u�+�>�H����
#����!���H��
�
� 6��
=�F����&�(�+��q�=��=�

�����	5�5�����3�4�5�5�-
(�
(��	(�	(��	%�	%��&5�5�r'c��|j|�}ddlm}ddlm}dtj�j��}dtj�j��}|d|�d|�d|�d	|�d
�	�}t||�rD|j�5}|j�5|j|�ddd�ddd�n*|j�5|j|�ddd�t||�}tdgdd
��}	tj||	�y#1swY�nxYw#1swY�GxYw#1swY�SxYw)Nrr�rw�group_�group_view_z
    CREATE TABLE zF (
        group_id INTEGER,
        name TEXT
    );
    INSERT INTO z- VALUES
        (1, 'name');
    CREATE VIEW z
    AS
    SELECT * FROM z;
    rIr���group_idr�)r}r�r�r!rx�uuid�uuid4�hexryr�rkrNr%rr�r�)
rWrr�rxr�r��sql_stmtrprrs
          r/�test_read_view_postgresr=�s>���"�"�4�(�D�(�#��$�*�*�,�*�*�+�,�J��d�j�j�l�.�.�/�0�I��
�����������,��
	��H��$���
�\�\�^�	&�s�����
&����H�%�
&�	&�	&��Z�Z�\�	#��L�L��"�	#�
�I�t�
,�F��q�c�6�:�;�H����&�(�+�
&�
&��	&�	&��	#�	#�s0�D-�"D!�4D-�D9�!D*	�&D-�-D6�9Ec���d}d}d}|j|�|j|�|j|�tjd|�}tdgdd��}t	j
||�y)Nz<
CREATE TABLE groups (
   group_id INTEGER,
   name TEXT
);
z,
INSERT INTO groups VALUES
    (1, 'name');
z1
CREATE VIEW group_view
AS
SELECT * FROM groups;
zSELECT * FROM group_viewrIr�r7)rNr�r�rr�r�)rs�create_table�insert_into�create_viewrrs      r/�test_read_view_sqliterB�su���L��K��K�
���<�(����;�'����;�'�
�[�[�3�^�
D�F��q�c�6�:�;�H����&�(�+r.c���tjtd��5tjt
d��5t
jd|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz+pandas.io.sql.execute requires a connectionr��P`pandas.io.sql.execute` is deprecated and will be removed in the future version.�select * from iris)rr��	TypeErrorr�r��
FutureWarningrrN)r]s r/�test_execute_typeerrorrH�sq��	���y�(U�	V�B�
�
'�
'��5�
�	B�

�K�K�,�.@�A�	B�B�B�	B�	B��B�B�s"�A,�A �A,� A)	�%A,�,A5c��tjtd��5tjd|�ddd�y#1swYyxYw)NrDr�rE)r�r�rGrrN)r_s r/�test_execute_deprecatedrJ�s?��	�	#�	#��1�
�<�
	���(�*:�;�<�<�<�s	�<�Ac�<�d|vryd|vryd|vrytd|����)Nr)r'r(zunsupported connection: )r�)r�s r/�flavorrL�s6���y� ��	�Y�	��	�I�	��
�/�	�{�;�
<�<r.c��d|vr:|jjtjj	dd���|}|j|�}|dt
|�}d}t|�5}|j�5|j||��}ddd�ddd�t�y#1swY�xYw#1swY�!xYw)Nr|�)'params' not implemented for ADBC driversTr�r*r�r��r�r�rr�r�r}rLr#�run_transaction�
read_queryr��rWrr0r�r�ror�r�s        r/�test_read_sql_iris_parameterrS	s���
��~�������K�K���B��
�
�	
��I��"�"�4�(�D��)�*�6�)�+<�=�E�
!�F�	�4�	 �D�I�
�
&�
&�
(�	D�"�-�-�e�F�-�C�J�	D�D��Z� �	D�	D��D�D�s$�0B=�B1�B=�1B:	�6B=�=Cc��d|vr:|jjtjj	dd���|}|j|�}|dt
|�}ddd�}t|�5}|j�5|j||�	�}ddd�ddd�t�y#1swY�xYw#1swY�!xYw)
Nr|rNTr�r+r�r�r�r�rOrRs        r/�"test_read_sql_iris_named_parameterrUs���
��~�������K�K���B��
�
�	
��I��"�"�4�(�D��/�0��	�1B�C�E�#�s�
3�F�	�4�	 �D�I�
�
&�
&�
(�	D�"�-�-�e�F�-�C�J�	D�D��Z� �	D�	D��D�D�s$�3C�B4�C�4B=	�9C�C	c��d|vsd|vr3d|vr/|jtjjd���|}|j	|�}|dt|�}t
|�5}|j�5|j|d��}ddd�ddd�t�y#1swY�xYw#1swY�!xYw)Nr(r)r|zbroken testr�r,r�)
r�rr�r�r}rLr#rPrQr�)rWrr0r�r�r�r�s       r/�,test_read_sql_iris_no_parameter_with_percentrW0s����$��<�4�/�F�$�4F����F�K�K�-�-�]�-�C�D��I��"�"�4�(�D��9�:�6�)�;L�M�E�	�4�	 �B�I�
�
&�
&�
(�	B�"�-�-�e�D�-�A�J�	B�B��Z� �	B�	B��B�B�s$�+B8�<B,�B8�,B5	�1B8�8Cc�h�|j|�}tjd|�}t|�y)NzSELECT * FROM iris_view)r}rr$r�r�s   r/�test_api_read_sql_viewrYCs-���"�"�4�(�D��#�#�$=�t�D�J��Z� r.c�>�d|vr9|jjtjj	d���|j|�}d}t
j||d��}t
j||�}tjt|�|�y)Nr|r�r�z1SELECT * FROM iris_view WHERE "SepalLength" < 0.0r�r�)r�r�rr�r�r}rr$r�r�r)rWrr��
with_batch�
without_batchs     r/�*test_api_read_sql_with_chunksize_no_resultr]Js���
��~�������K�K���%R��S�	
��"�"�4�(�D�?�E��#�#�E�4�1�=�J��&�&�u�d�3�M����&��,�m�<r.c�*�|j|�}tjd|�r1tj|d��5}|j	d�ddd�tj
|d|�tjd|�sJ�y#1swY�9xYw)Nr�Tr�)r}rr�r rr~)rWrr�r�s    r/�test_api_to_sqlr_Wsy���"�"�4�(�D�
�}�}�]�D�)�
�_�_�T�D�
9�	0�Y�� � ��/�	0��J�J�{�M�4�0��=�=���-�-�-�		0�	0�s�B	�	Bc���|j|�}tjd|�r1tj|d��5}|j	d�ddd�tj
|d|d��tjd|�sJ�d}t
jt|��5tj
|d|d��ddd�y#1swY�zxYw#1swYyxYw)N�test_frame2Tr�r�r�z"Table 'test_frame2' already existsr�)	r}rr�r rr~rr�r�)rWrr�r�r�s     r/�test_api_to_sql_failrbbs����"�"�4�(�D�
�}�}�]�D�)�
�_�_�T�D�
9�	0�Y�� � ��/�	0��J�J�{�M�4�6�B��=�=���-�-�-�
.�C�	���z��	-�G��
�
�;�
�t�v�F�G�G�	0�	0��G�G�s�C
�'C�
C�Cc��|j|�}tjd|�r1tj|d��5}|j	d�ddd�tj
|d|d��tj
|d|d��tjd|�sJ�t
|�}t|d�}||k(sJ�y#1swY�rxYw)Nr�Tr�r�r�r��r}rr�r rr~r�r��rWrr�r��num_entries�num_rowss      r/�test_api_to_sql_replacerhqs����"�"�4�(�D�
�}�}�]�D�)�
�_�_�T�D�
9�	0�Y�� � ��/�	0��J�J�{�M�4�6�B��J�J�{�M�4�9�E��=�=���-�-�-��k�"�K��$�
�.�H��{�"�"�"�	0�	0�s�C�Cc��|j|�}tjd|�r1tj|d��5}|j	d�ddd�tj
|d|d��dk(sJ�tj
|d|d��dk(sJ�tjd|�sJ�dt
|�z}t|d�}||k(sJ�y#1swY�xYw)	N�test_frame4Tr�r�r�rLr�rJrdres      r/�test_api_to_sql_appendrk�s����"�"�4�(�D�
�}�}�]�D�)�
�_�_�T�D�
9�	0�Y�� � ��/�	0��:�:�k�=�$�&�I�Q�N�N�N��:�:�k�=�$�(�K�q�P�P�P��=�=���-�-�-��c�+�&�&�K��$�
�.�H��{�"�"�"�	0�	0���C�Cc�V�|j|�}tjd|�r1tj|d��5}|j	d�ddd�tj
|d|d��tjd|�}tj||�y#1swY�OxYw)N�test_frame5Tr�F�r�zSELECT * FROM test_frame5)	r}rr�r rr~r�r�r�)rWrr�r�rs     r/�test_api_to_sql_type_mappingrp�s����"�"�4�(�D�
�}�}�]�D�)�
�_�_�T�D�
9�	0�Y�� � ��/�	0��J�J�{�M�4�u�=�
�\�\�5�t�
<�F����+�v�.�
	0�	0�s�B�B(c��|j|�}tjd|�r1tj|d��5}|j	d�ddd�tt
jdd��d��}tj|d|d	�
�tjd|�}tj|j�|�y#1swY�xYw)N�test_seriesTr�r�r�r��seriesr�FrozSELECT * FROM test_series)
r}rr�r rrr��aranger~r$r�r��to_frame)rWrr��s�s2s     r/�test_api_to_sql_seriesrx�s����"�"�4�(�D�
�}�}�]�D�)�
�_�_�T�D�
9�	0�Y�� � ��/�	0�	�r�y�y��'�*��:�A��J�J�q�-��U�3�	�	�	�7��	>�B����!�*�*�,��+�
	0�	0�rlc�2�|}|j|�}tjd|�r1tj|d��5}|j	d�ddd�tj
|d|��tjd|��}d|vr|jddi�	�}|j|_|jdd�
�|jjt�d|j_tj||�y#1swY��xYw)N�test_frame_roundtripTr��rp�"SELECT * FROM test_frame_roundtripr|�__index_level_0__�level_0r���inplace)r}rr�r rr~r$�renamer��	set_indexr�rlr�r�r��rWrr�r�r�rs      r/�test_api_roundtripr��s����I��"�"�4�(�D�
�}�}�+�T�2�
�_�_�T�D�
9�	9�Y�� � �!7�8�	9��J�J�{�2��=�
�
�
� D�$�
O�F�������(;�Y�'G��H���$�$�F�L�
���Y���-�
�L�L������F�L�L�����&�+�.�	9�	9�s�D
�
Dc���d|vr9|jjtjj	d���|j|�}t
jd|�r1t
j|d��5}|jd�ddd�t
j|d|dd�	�t
jd
|��}tj||�y#1swY�QxYw)Nr|r�r�rzTr�FrJ)rpr�r�r|r{)r�r�rr�r�r}rr�r rr~r$r�r�)rWrr�r�rs     r/�test_api_roundtrip_chunksizer��s���
��~�������K�K���%R��S�	
��"�"�4�(�D�
�}�}�+�T�2�
�_�_�T�D�
9�	9�Y�� � �!7�8�	9��J�J��������
�
� D�$�
O�F����&�+�.�	9�	9�s�<C�C'c��|j|�}tj|�5}|jd�}|j	�}|j�ddd�t
�gd�k(sJ�y#1swY�xYw�Nr�r�)r}rr#rNr�rUr")rWr�
pandas_sql�iris_resultsr]s     r/�test_api_execute_sqlr��sy���"�"�4�(�D�	�	�	�t�	$��
�!�)�)�*>�?���#�#�%���������9�;�;�;�;�	��s�2A4�4A=c
�l�|}|j|�}tjd|�}d|vs>d|vs:t|jj
jtj�rJ�tjd|dg��}t|jj
jtj�sJ�|jj�tdddd	d	d	�tddd
d	d	d	�gk(sJ�tjd|ddi��}t|jj
jtj�sJ�|jj�tdddd	d	d	�tddd
d	d	d	�gk(sJ�tjd|dg��}t|jj
jtj�sJ�|jj�td
ddd	d	d	�tdddd	d	d	�gk(sJ�tjd|ddi��}t|jj
jtj�sJ�|jj�td
ddd	d	d	�tdddd	d	d	�gk(sJ�tjd|ddi��}t|jj
jtj�sJ�|jj�td�td�gk(sJ�y)N�SELECT * FROM typesr(r5r���parse_datesi�rIrKrrL�%Y-%m-%d %H:%M:%Sr�i���i�rvr�z%Y%m%dz
2010-10-10z
2010-12-12)
r}rr$r�r�rAr�r��
datetime64�tolistrr�r�r�s    r/�test_api_date_parsingr��s���I��"�"�4�(�D�

�	�	�1�4�	8�B��y� �J�)�$;��b�j�j�.�.�3�3�R�]�]�C�C�C�	�	�	�1�4�i�[�	Q�B��b�j�j�&�&�+�+�R�]�]�;�;�;�
�:�:�����$��1�a��A�&��$��1�a��A�&�#����


�	�	���� 3�4�
�B�
�b�j�j�&�&�+�+�R�]�]�;�;�;�
�:�:�����$��1�a��A�&��$��1�a��A�&�#����


�	�	�1�4�l�^�	T�B��b�m�m�)�)�.�.��
�
�>�>�>�
�=�=���!��$��B��1�a�(��$��1�a��A�&�&����


�	�	��t�,��1D�
�B��b�m�m�)�)�.�.��
�
�>�>�>�
�=�=���!��$��B��1�a�(��$��1�a��A�&�&����


�	�	���%�x�0�
�B�
�b�'�'�-�-�2�2�B�M�M�B�B�B�
���#�#�%��,���,��*���r.�error)rt�raise�coercezread_sql, text, moder�)r?�fallbackr�r?c���|}|j|�}|dk(r4|dk(r/|jtjj	d���|jddi�}|||dd|ii��}	d	|vr6|	d
jt�|	d
<|	djt�|	d<|dk(r2|jd
d
d
d��}ts|djd�|d<tj|	|�y)Nr�rwz failing combination of argumentsr�r��datetime64[ns]rv)rpr�r5r�r�rM�int32)r�r�r�zdatetime64[us])r}r�rr�r�r�rlrSrr�r�)
rWrr�rxr�r�r�r�rrs
          r/�!test_api_custom_dateparsing_errorr�s��$�I��"�"�4�(�D��w��9�(>�>�����K�K���%G��H�	
� �&�&�	�3C�'D�E�H�
�����%�(�
��F��Y��"�9�-�4�4�S�9��y��$*�+<�$=�$D�$D�U�$K�� �!��+�+��?�?�%�")�!�
�
��$�"*�9�"5�"<�"<�=M�"N�H�Y�����&�(�+r.c�D�|j|�}tjd|dddg��}t|jj
jtj�sJ�t|jj
jtj�sJ�y)Nr�r�r�)�	index_colr�)
r}rr$r�r�rAr�r�r�r��rWrr�s   r/�test_api_date_and_indexr�Us}���"�"�4�(�D�	�	�	������-�	
�B��b�h�h�n�n�)�)�2�=�=�9�9�9��b�m�m�)�)�.�.��
�
�>�>�>r.c	�f�|}|j|�}tjd|�r1tj|d��5}|j	d�ddd�tt
ddgd���j�}|dk(r9|jjtjjd	�
��d|vrtrt}n	d}nt}t!j"|d�
�5|j%d|��}ddd�dk(sJ�tj&d|�}|dk(r>t
t)j*dddd��t)j*dddd��gd��}n|dj-d�}t!j.|d|�y#1swY��IxYw#1swY��xYw)N�test_timedeltaTr�z00:00:01z00:00:03�foor�rhz.sqlite ADBC driver doesn't implement timedeltar�r|F)r��r�rprJzSELECT * FROM test_timedeltar>ri@B)�months�days�microseconds�nanosecondsi��-r�)r}rr�r rrrrur�r�rr�r�rr�r�r�r�r~r$r��
DateOffsetr�r�)	rWrr�r�r�r�rrrs	         r/�test_api_timedeltar�ds����I��"�"�4�(�D�
�}�}�%�t�,�
�_�_�T�D�
9�	3�Y�� � �!1�2�	3�
�f�j�*�5�E�B�	C�	L�	L�	N�B��&�&�������K�K���G�
�
�	
�����,�K��K�!��	�	#�	#�K�%�	H�B��y�y�&6�D�y�A��B��1����
�
�
� >��
E�F��*�*���
�
�Q�Q�W�RS�T��
�
�Q�Q�W�RS�T�
��
���e�9�#�#�G�,�����6�%�=�(�3�M	3�	3��(B�B�s�F�0F'�F$�'F0c���|}|j|�}tdddgi�}d|vrd}nd}tjt|��5|jd|�	��J�	ddd�y#1swYyxYw)
Nr�y�?�?y@r|zdatatypes not supportedzComplex datatypes not supportedr��test_complexr{)r}rrr�r�r~)rWrr�r�r�s     r/�test_api_complex_raisesr��sx���I��"�"�4�(�D�	�C�&�"��&�	'�B�
���'��/��	���z��	-�;��y�y��T�y�2�:�:�:�;�;�;�s�A'�'A0zindex_name,index_label,expected))NNr�)N�other_labelr�)�
index_nameNr�)r�r�r�)rN�0)Nrr�c��d|vr9|jjtjj	d���|j|�}t
jd|�r1t
j|d��5}|jd�ddd�tdtd�i�}||j_
d	}t
j|d||�
�t
j||�}|j d|k(sJ�y#1swY�vxYw)Nr|�-index_label argument NotImplemented with ADBCr��test_index_labelTr�rrL�SELECT * FROM test_index_label)�index_labelr)r�r�rr�r�r}rr�r rr�ranger�r�r~r$r�)	rWrr�r�rr��
temp_framer�r�s	         r/�test_api_to_sql_index_labelr��s���&��~�������K�K���%T��U�	
��"�"�4�(�D�
�}�}�'��.�
�_�_�T�D�
9�	5�Y�� � �!3�4�	5��F�E�!�H�-�.�J�&�J����,�E��J�J�z�-�t��M����u�d�+�E��=�=���x�'�'�'�	5�	5�s�<D�Dc��|}d|vr1|jtjjdd���n=d|vr9|jjtjjd���|j
|�}tjd|�r1tj|d	�
�5}|jd�ddd�d}tdtd�itjd
dg���}tj|d|�}||k(sJ�tj d|�}|j"ddk(sJ�|j"ddk(sJ�tj|d|dddg��}||k(sJ�tj d|�}|j"ddj%�ddgk(sJ�ddg|j&_tj|d|d��}||k(sJ�tj d|�}|j"ddj%�ddgk(sJ�tj|d|dddg��}||k(sJ�tj d|�}|j"ddj%�ddgk(sJ�d}tj*t,|��5tj|d|dd��ddd�y#1swY���xYw#1swYyxYw)Nr(z/MySQL can fail using TEXT without length as keyFr�r|r�r�r�Tr�rLr)�A0�A1)�B0�B1ror�rr~rI�level_1r�r�r�)r|r�rJr�r�r�zALength of 'index_label' should match number of levels, which is 2r�)r�rr�r�r�r�r}rr�r rrr�r�from_productr~r$r�r�r��namesr�r�)	rWrr�r��expected_row_countr�rr�r�s	         r/�&test_api_to_sql_index_label_multiindexr��s����I��)������K�K���H�QV�
�
�	
�

�9�	�������K�K���%T��U�	
��"�"�4�(�D�
�}�}�'��.�
�_�_�T�D�
9�	5�Y�� � �!3�4�	5����	��q����%�%�|�\�&B�C��J��Z�Z�
�$6��
=�F��'�'�'�'����?��F�E��=�=���y�(�(�(��=�=���y�(�(�(��Z�Z������#�J��F��'�'�'�'����?��F�E��=�=��!��#�#�%�#�s��3�3�3�"�3�Z�J����
�Z�Z�
�$6��	�
R�F��'�'�'�'����?��F�E��=�=��!��#�#�%�#�s��3�3�3��Z�Z������#�J��F��'�'�'�'����?��F�E��=�=��!��#�#�%�#�s��3�3�3�
M�C�	���z��	-�
��
�
������	
�
�
�a	5�	5��`
�
�s�3K�K
�K
�
Kc��|j|�}tjd|�r1tj|d��5}|j	d�ddd�tjddggd�ddg�	�}|jd|�
�tjd|ddg��}tj||d�
�y#1swY�mxYw)N�test_multiindex_roundtripTr��rIr�line1�rJ��?�line2�r�r�r�r�r��r�r�r�z'SELECT * FROM test_multiindex_roundtrip�r���check_index_type)r}rr�r rr�from_recordsr~r$r�r�)rWrr�r�rs     r/�test_api_multiindex_roundtripr�s����"�"�4�(�D�
�}�}�0�$�7�
�_�_�T�D�
9�	>�Y�� � �!<�=�	>�
�	�	�	�-�.���C�j�
�B��I�I�.�D�I�9�
�
�
�1�4�C��:��F����"�f�t�<�	>�	>�s�B=�=CrA�r�r�c��|}|j|�}tjd|�r1tj|d��5}|j	d�ddd�tddgddggdd	g�
�}|j
d|��dk(sJ�|j|�}d
|vrd}nd}tj|||��}tj||�y#1swY�xYw)N�test_dtype_argumentTr��333333�?g333333@�ffffff@g333333@r�r�r�r�rJr5z(SELECT "A", "B" FROM test_dtype_argumentz$SELECT A, B FROM test_dtype_argument�rprA)r}rr�r rrr~r�r$r�r�)	rWrrAr�r�r�rr�rs	         r/�test_api_dtype_argumentr�#s����I��"�"�4�(�D�
�}�}�*�D�1�
�_�_�T�D�
9�	8�Y�� � �!6�7�	8�
�S�#�J��c�
�+�c�3�Z�	@�B�
�9�9�/�T�9�:�a�?�?�?��y�y���H��Y��:��6��
�
�
��4�u�
=�F����&�(�+�	8�	8�s�C�Cc��|j|�}tddgddggddg��}tj|d|d�	�y)
NrIrJrKrLrr��test_frame_integer_col_namesr�r�)r}rrr~r�s   r/�test_api_integer_col_namesr�CsB���"�"�4�(�D�	�Q��F�Q��F�#�a��V�	4�B��J�J�r�1�4�9�Mr.c���d|vr:|jjtjj	dd���|j|�}t
j|d|��}d|vsJ�y)Nr|�-'get_schema' not implemented for ADBC driversTr�rzr{�CREATE�r�r�rr�r�r}r�
get_schema�rWrr�r#s    r/�test_api_get_schemar�Jsj��
��~�������K�K���F��
�
�	
��"�"�4�(�D�����V��>�J��z�!�!�!r.c���d|vr:|jjtjj	dd���|j|�}t
j|d|d��}d|vsJ�y)	Nr|r�Tr�rz�pypi)rpr�zCREATE TABLE pypi.r�r�s    r/�test_api_get_schema_with_schemar�Xsn����~�������K�K���F��
�
�	
��"�"�4�(�D�����V��f�M�J��:�-�-�-r.c�8�d|vr:|jjtjj	dd���|}|j|�}t
ddgddgd	��}|d
k(rd}ndd
lm}|}tj|d|d|i��}d|vsJ�d|vsJ�y)Nr|r�Tr�皙�����?r�r皙����@r�rs�INTEGERr)r�rzr�r�r�)r�r�rr�r�r}rr?r�rr�)rWrr��float_framerAr�r#s       r/�test_api_get_schema_dtypesr�gs���
��~�������K�K���F��
�
�	
��I��"�"�4�(�D��3��*�C��:�>�?�K��$�$���&�������V��c�5�\�R�J��z�!�!�!��
�"�"�"r.c�n�d|vr:|jjtjj	dd���|}|j|�}t
ddgddgd	��}tj|d
|d��}d
|vrd}nd}||vsJ�tj|d
|ddg��}d
|vrd}nd}||vsJ�y)Nr|r�Tr�r�r�rr�)�Col1�Col2rzr�)rpr�r(z'CONSTRAINT test_pk PRIMARY KEY (`Col1`)z'CONSTRAINT test_pk PRIMARY KEY ("Col1")r�r�z)CONSTRAINT test_pk PRIMARY KEY (`A`, `B`)z)CONSTRAINT test_pk PRIMARY KEY ("A", "B"))	r�r�rr�r�r}rrr�)rWrr�r�r�r#�constraint_sentences       r/�test_api_get_schema_keysr�s���
��~�������K�K���F��
�
�	
��I��"�"�4�(�D���S�z�C��:�>�?�E�����v�4�f�E�J��)��G��G���*�,�,�,�����V��S�#�J�O�J��)��I��I���*�,�,�,r.c�h�d|vr9|jjtjj	d���|}|j|�}t
jd|�r1t
j|d��5}|jd�ddd�ttjjd�jd�td	��
�}|j!d|d��t
j"d
|�}t�}d}gd�}t
j"d
|d��D])}	t%||	gd��}t'|	�||k(sJ�|dz
}�+t)j*||�|dk(r=tj,t.d��5t
j0d|d��ddd�yt�}
d}gd�}t
j0d|d��D])}	t%|
|	gd��}
t'|	�||k(sJ�|dz
}�+t)j*||
�y#1swY���xYw#1swYyxYw)Nr|r�r��test_chunksizeTr�rJ)�r��abcder�Fr�zselect * from test_chunksizer)r�r�r�r�rJr�r���ignore_indexrIrsr�r�)r�r�rr�r�r}rr�r rrr��random�default_rng�standard_normalr"r~r$rr�r�r�r��NotImplementedErrorr%)rWrr�r�r�r�r��i�sizes�chunk�res3s           r/�test_api_chunksize_readr��s��
��~�������K�K���%R��S�	
��I��"�"�4�(�D�
�}�}�%�t�,�
�_�_�T�D�
9�	3�Y�� � �!1�2�	3�
�
�	�	���a� �0�0��9�4��=�
�B��I�I�#��U�I�;����<�d�C�D��;�D�	�A��E��#�#�$B�D�TU�V����t�U�m�$�7���5�z�U�1�X�%�%�%�	�Q����
���$��%��$�$�
�]�]�.�b�
9�	D����/���C�	D�	D��{��
�����'�'�(8�$�!�L�	�E��4��-�d�;�D��u�:��q��)�)�)�
��F�A�	�
	���d�D�)�K	3�	3��2	D�	D�s�>H�H(�H%�(H1c��|dk(rjtdd��}|�[t|j�td�kr:|jj	t
jjdd���|j|�}tjd	|�r1tj|d�
�5}|jd	�ddd�tgd�gd�d
��}|j�}|djd�|d<|j!d	|d��tj"d|�}t%j&||�y#1swY��xYw)Nr>r:rtruz0.9.0z:categorical dtype not implemented for ADBC postgres driverTr��test_categoricalr�r�)�John P. Doez	Jane Dover)�	person_id�person_namer�categoryFr�zSELECT * FROM test_categorical)rrr@r�r�rr�r�r}rr�r rr�copyr�r~r$r�r�)rWrr|r�r��df2�ress       r/�test_api_categoricalr	�s-���%�%�)�*B�8�T������(8�(8� 9�G�G�<L� L��L�L�#�#����!�!�W��"��
��"�"�4�(�D�
�}�}�'��.�
�_�_�T�D�
9�	5�Y�� � �!3�4�	5�
�"�F�	
�
�B�
�'�'�)�C��]�+�2�2�:�>�C�
���J�J�&�D��J�>�

�
�
�=�t�
D�C����#�r�"�	5�	5�s�.E�Ec��|j|�}tjd|�r1tj|d��5}|j	d�ddd�tddgddggdd	g�
�}|j
d|d��y#1swY�3xYw)
N�test_unicodeTr�rIrJrKrL�ér�r�Fr�)r}rr�r rrr~)rWrr�r�s    r/�test_api_unicode_column_namer
�s����"�"�4�(�D�
�}�}�^�T�*�
�_�_�T�D�
9�	1�Y�� � ��0�	1�
�Q��F�Q��F�#�f�c�]�	;�B��I�I�>�t�5�I�9�		1�	1�s�B�Bc��|}|j|�}tjd|�r1tj|d��5}|j	d�ddd�tgd�dtjdgd��}|jd|d�	�d
|vrd}nd}tj||�}tj||�y#1swY�txYw)
Nzd1187b08-4943-4c8d-a7f6Tr��rrIrJr�r�r�Fr�r5z'SELECT * FROM "d1187b08-4943-4c8d-a7f6"z'SELECT * FROM `d1187b08-4943-4c8d-a7f6`)r}rr�r rrr��nanr~r$r�r�)rWrr�r�r�r�rs       r/�test_api_escaped_table_namer�s����I��"�"�4�(�D�
�}�}�.��5�
�_�_�T�D�
9�	<�Y�� � �!:�;�	<�
��#�r�v�v�s�);�<�	=�B��I�I�,�$�e�I�D��Y��9��9��

�
�
�U�D�
)�C����#�r�"�	<�	<�s�C�Cc��d|vrttjd�}t|j�td�k\r|dvs:|jjtjjdd���|j|�}tjd|�r1tj|d�	�5}|jd�ddd�tgd
�gd�dd
��}|jd|d��tj d|�}tgd�gd�gd�ggd���}t#j$||�y#1swY�uxYw)Nr|r�z16.0)rhr>z!pyarrow->pandas throws ValueErrorTr��
test_tabler�r�r�rI�r�r�r�Fr�z)SELECT a, b, a +1 as a, c FROM test_table)rIr�rJrI)rJr�rKrI)rKr�rLrI)r�r�r�r�r�)rrrr@r�r�r�r�r}rr�r rrr~r�r�r�r�)rWr�par�r�rrs       r/�#test_api_read_sql_duplicate_columnsr	s����~�
�
 �
 ��
+���B�N�N�#�w�v��6��D�D��L�L�#�#����!�!�>�t�"��
�
�"�"�4�(�D�
�}�}�\�4�(�
�_�_�T�D�
9�	/�Y�� � ��.�	/�
���q�A�	B�B��I�I�<�T��I�7�
�[�[�D�d�
K�F��	���8�$��H����&�(�+�	/�	/�s�7D=�=Ec�6�|}|dk(r/|jtjjd���|j	|�}tj|d|�ddg}tjd||��}|jj�|k(sJ�y)Nrs�Not Implementedr�r�r�r�r�)
r�rr�r�r}rr~r%r�r�)rWrr�r��colsrs      r/�test_read_table_columnsr-	s����I��$�$����F�K�K�-�-�5F�-�G�H��"�"�4�(�D��J�J�{�L�$�/���:�D�
�
�
��d�D�
A�F��>�>� � �"�d�*�*�*r.c�L�|}|dk(r/|jtjjd���|j	|�}tj|d|�tjd|d��}|jjdgk(sJ�tjd|ddg��}|jjddgk(sJ�tjd|ddgd	d
g��}|jjddgk(sJ�|jj�d	d
gk(sJ�y)Nrsrr�r�r�r�r�r�r�r�)r�r�)r�rr�r�r}rr~r%r�r�r�r�)rWrr�r�rs     r/�test_read_table_index_colr=	s���I��$�$����F�K�K�-�-�5F�-�G�H��"�"�4�(�D��J�J�{�L�$�/�
�
�
��d�g�
F�F��<�<���'��*�*�*�
�
�
��d�s�C�j�
I�F��<�<���#�s��+�+�+�
�
�
��d�s�C�j�3��*��F��<�<���#�s��+�+�+��>�>� � �"�s�C�j�0�0�0r.c��|dk(r/|jtjjd���|j	|�}tjd|�}tjd|�}tj||�tjd|�}tjd|�}tj||�y)Nrur�r�r�r8)r�rr�r�r}rr$r�r�r�r%)rWr�iris_frame1�iris_frame2s    r/�test_read_sql_delegater T	s����$�$�����K�K���T�
�
�	
��"�"�4�(�D��$�$�%9�4�@�K��,�,�3�T�:�K����+�{�3��$�$�V�T�2�K��,�,�v�t�,�K����+�{�3r.c�6�|}ddlm}ddlm}|d�|d�g}|D]|}t	||�rD|j�5}|j
�5|j|�ddd�ddd��S|j
�5|j|�ddd��~tjd�5tjd|�tjd|�ddd�y#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)Nrrwr�z,CREATE TABLE invalid (x INTEGER, y UNKNOWN);z0CREATE TABLE other_table (x INTEGER, y INTEGER);�other_tablezSELECT * FROM other_table)
r?rxr�r�ryr�rkrNr�r�rr%r$)rYrWrxr��
query_listr�s      r/�test_not_reflect_all_tablesr$g	s���D��(�	
�
;�<��
?�@��J�
�$���d�F�#�����
(�4��Z�Z�\�(��L�L��'�(�
(�
(�����
$����U�#�
$�
$�
$�
�	#�	#�D�	)�>����=�$�/����6��=�>�>�
(�(��
(�
(��
$�
$��>�>�s<�C7�C+�#C7�D�5-D�+C4�0C7�7D	�D	�Dc���|}|dk(sd|vr/|jtjjd���|j	|�}tjtd��5tj|�5}|jdd�ddd�ddd�tjd�5|jd	|�
�ddd�y#1swY�CxYw#1swY�GxYw#1swYyxYw)Nrsr|zDoes not raise warningr�z�The provided table name 'TABLE1' is not found exactly as such in the database after writing the table, possibly due to case sensitivity issues. Consider using lower case table names.r��TABLE1r��
CaseSensitiver�)r�rr�r�r}r�r�r�rr �check_case_sensitiver~)rWrr�r�rs     r/�(test_warning_case_insensitive_table_namer)�	s����I��$�$��)�(;����F�K�K�-�-�5M�-�N�O��"�"�4�(�D�	�	#�	#��
J�
�	2��_�_�T�
"�	2�b��#�#�H�b�1�	2�	2�
�	#�	#�D�	)�;�����T��:�;�;�		2�	2��	2�	2��;�;�s0�'C�=C�C�5C*�C	�C�C'�*C3c�J�|j|�}ddlm}tdt	ddgd��i�}tj|�5}tjd||�	�}t|jjdj|�sJ�	ddd�y#1swYyxYw)
Nr)�	TIMESTAMPr�2014-12-12 01:54�2014-12-11 02:54T��utc�	test_type�r�)r}r?r+rrrr �SQLTableryr�r�r�)rWrr+r�rr�s      r/�test_sqlalchemy_type_mappingr3�	s����"�"�4�(�D�$�
�	��0�2D�E�4�P�Q�
�B�

����	�A�"����[�"�B�7���%�+�+�-�-��/�4�4�i�@�@�@�A�A�A�s
�AB�B"zinteger, expected)�int8�SMALLINT)�Int8r5)�uint8r5)�UInt8r5)�int16r5)�Int16r5)�uint16r�)�UInt16r�)r�r�)�Int32r�)�uint32�BIGINT)�UInt32r?)r�r?)�Int64r?r�r?r�c�@�|j|�}tddgdg|��}tj|�5}tjd||��}t|jjjj�}ddd�|k(sJ�y#1swY�xYw)NrrIr��r�rAr0r1)
r}rrr r2r�r�r�r�r�)rWrr�rr�rr�rs        r/�test_sqlalchemy_integer_mappingrD�	s���.�"�"�4�(�D�	�A�q�6�C�5��	8�B�	����	�+�"����[�"�B�7���U�[�[�]�]�_�_�)�)�*��+��X����	+�+�s�AB�Br��uint64�UInt64c�,�|j|�}tddgdg|��}tj|�5}t	j
td��5tjd||��ddd�ddd�y#1swY�xYw#1swYyxYw)	NrrIr�rCz1Unsigned 64 bit integer datatype is not supportedr�r0r1)r}rrr rr�r�r2)rWrr�r�rs     r/�(test_sqlalchemy_integer_overload_mappingrH�	s����"�"�4�(�D�	�A�q�6�C�5��	8�B�	����	�4�"�
�]�]��Q�
�	4�
�L�L��b��3�	4�4�4�	4�	4��4�4�s#�B
�A>�-B
�>B	�B
�
Bc���tjd�|j|�}tj�5}d|z}d}|j||dd��t
j||�}t
j||�}d}t
j||�}	ddd�tj|�tj|�tj|	�y#1swY�LxYw)Nr?rSr8r�Fr{r�)rrr}r�rTr~rr�r%r$r�)
rWrr�r��db_urir�rar�r�rjs
          r/�test_database_uri_stringrK�	s���
����%��"�"�4�(�D�

���	�8�d���$��������6�Y�e��T��l�l�5�&�1���(�(���7��$���(�(���7��8����+�{�3����+�{�3����+�{�3�8�8�s�A!C'�'C0�pg8000c���tjd�|j|�}d}tjtd��5tjd|�ddd�y#1swYyxYw)Nr?z)postgresql+pg8000://user:pass@host/dbnamerLr�zselect * from table)rrr}r��ImportErrorrr�)rWrrJs   r/�(test_pg8000_sqlalchemy_passthrough_errorrO�	s[������%��"�"�4�(�D�9�F�	���{�(�	3�4����*�F�3�4�4�4�s�A$�$A-c��|}|j|�}ddlm}d|vr	|d�}n|d�}tj||ddi��}t|d	�}|dhk(sJ�y)
Nrrwr5z%select * from iris where "Name"=:namez#select * from iris where name=:namer�zIris-versicolorr�r=)r}r?rxrr��set)rWrr�rx�	name_text�iris_df�	all_namess       r/�test_query_by_text_objrU�	sr���I��"�"�4�(�D���Y���@�A�	��>�?�	��l�l�9�d�F�<M�3N�O�G��G�F�O�$�I��*�+�+�+�+r.c��|j|�}ddlm}m}t	�}||�j|jj|d�k(�}tj||ddi��}t|d�}|dhk(sJ�y)Nr)�	bindparamr�r�r�r�r=)r}r?rWr�rC�wherer�r=rr�rQ)rWrrWr�r8�name_selectrSrTs        r/�test_query_by_select_objrZ
s|���"�"�4�(�D��
� �D���,�$�$�T�V�V�[�[�I�f�4E�%E�F�K��l�l�;��f�m�5L�M�G��G�F�O�$�I����'�'�'r.c�6�|}|dk(r/|jtjjd���|j	|�}tgd�gd�d��}|j
d|d�	�tjd|�}tj||�y)
Nrsrr�r�rKrLr�)r�z%_variation�test_column_percentageFr�)r�rr�r�r}rr~rr%r�r�)rWrr�r�rs     r/�test_column_with_percentager^
s����I��$�$����F�K�K�-�-�5F�-�G�H��"�"�4�(�D�	��9�=�	>�B��I�I�+��U�I�C�

�
�
�5�t�
<�C����#�r�"r.c��tj�5}ttj|��5}tj|d|d��dk(sJ�	ddd�ttj|��5}tjd|�}ddd�ddd�tj|�y#1swY�exYw#1swY�4xYw#1swY�8xYw)N�test_frame3_legacyFrorLz!SELECT * FROM test_frame3_legacy;)	r�rTrrzr�rr~r$r�)r�r�rWrs    r/�test_sql_open_closera%
s���
���	�S�d�
�W�_�_�T�*�
+�	Y�t��:�:�k�+?��U�S�WX�X�X�X�	Y��W�_�_�T�*�
+�	S�t��'�'�(K�T�R�F�	S�	S����+�v�.�
	Y�	Y��	S�	S��	S�S�s:�C�B8�&C�:C�C�8C	�=C�C
	�	C�Cc��d}d}tjt|��5tjd|�ddd�y#1swYyxYw)Nzmysql://root@localhost/pandasz-Using URI string without sqlalchemy installedr�r�)rr�rNrr�)rWr�s  r/�test_con_string_import_errorrc3
s>��*�D�
9�C�	���{�#�	.�1����)�4�0�1�1�1�s�A�A	c��Gd�d�}tj|d��5}tjt�5tjd|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc� �eZdZdd�Zd�Zd�Zy)�htest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnectionc�8�tj|i|��|_yr)rzr{rW)�self�args�kwargss   r/�__init__zqtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__init__>
s���*�*�D�;�F�;�D�Ir.c�.�t|j|�Sr)�getattrrW)rhr�s  r/�__getattr__zttest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.__getattr__A
s���4�9�9�d�+�+r.c�8�|jj�yr)rWrU)rhs r/rUzntest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installed.<locals>.MockSqliteConnection.closeD
s���I�I�O�O�r.N)�return�None)�__name__�
__module__�__qualname__rkrnrUr-r.r/�MockSqliteConnectionrf=
s��	<�	,�	r.rurozSELECT 1)rprr�r�r�rr�)rurWs  r/�Jtest_con_unknown_dbapi2_class_does_not_error_without_sql_alchemy_installedrv;
so����
�	�	�0��<�	=�+��
�
'�
'��
4�	+��L�L��T�*�	+�+�+�	+�	+��+�+�s#�A4�A(�A4�(A1	�-A4�4A=c�0�|}tjd|�}tjd|�}tj||�d}tjtj|��5tjd|�ddd�y#1swYyxYw)Nr�z9Execution failed on sql 'iris': near "iris": syntax errorr�r8)rr$r�r�r�rr��
DatabaseError)rurWrrr�s     r/�test_sqlite_read_sql_delegateryL
sw���D��$�$�%9�4�@�K��,�,�3�T�:�K����+�{�3�
G�C�	���s�(�(��	4�#����V�T�"�#�#�#�s�,B�Bc�<�tj|d�}d|vsJ�y)Nrzr�)rr�)r�r#s  r/�test_get_schema2r{W
s ������V�4�J��z�!�!�!r.c�^�|}tdtddgd��i�}tj|�}tjd||��}|j�}|j
d�D]@}|j
�d	jd
�dk(s�)|j
�ddk(r�@J�y)
Nrr,r-Tr.r0r1�
rrrIr+)rrrr!�SQLiteTable�
sql_schema�split�strip)rsrWr�rr�r��cols       r/�test_sqlite_type_mappingr�]
s����D�	�	��0�2D�E�4�P�Q�
�B�

�	�	�D�	!�B��O�O�K��2�6�E�
�
�
�
�F��|�|�D�!�1���9�9�;�q�>����$��.��9�9�;�q�>�[�0�0�0�1r.c���|dk(rtjd�|j|�}ddlm}tgd�gd�d��}t
j|d�	�5}|j|d
�dk(sJ�	ddd�||�}|jd
�sJ�t
j|d�	�5}|jd
�ddd�y#1swY�VxYw#1swYyxYw)NrU�#sqlite_str has no inspection systemrr����?�@�@�@�r�r�r�r���one�twoTr�r�rL)r�skipr}r?r�rrr r~r�r�rWrr�r�r��insps      r/�test_create_tabler�o
s����|�����9�:��"�"�4�(�D�"��#7�@T�U�V�J�	�����	5�?�����
�L�9�Q�>�>�>�?��4�=�D��>�>�,�'�'�'�

�����	5�+�����\�*�+�+�?�?��+�+�s�C	�.C�	C�Cc�b�|dk(rtjd�|j|�}ddlm}tgd�gd�d��}t
j|�5}|j�5|j|d�d	k(sJ�	ddd�||�}|jd�sJ�|j�5|jd�ddd�	|j�|jd�rJ�	ddd�y#1swY�|xYw#1swY�CxYw#t$rY�@wxYw#1swYyxYw)
NrUr�rr�r�r�r�r�rL)rr�r}r?r�rrr rPr~r�r�clear_cache�AttributeErrorr�s      r/�test_drop_tabler��
s*���|�����9�:��"�"�4�(�D�"��#7�@T�U�V�J�	����	�
0�)�
�
&�
&�
(�	C��#�#�J��=��B�B�B�	C��t�}���~�~�l�+�+�+�
�
&�
&�
(�	/�� � ��.�	/�	������>�>�,�/�/�/�/�
0�
0�	C�	C��	/�	/���	��	��
0�
0�s`�D%�*C>�3D%�6D
�D%�D�!D%�>D	�D%�
D	�D%�	D"�D%�!D"�"D%�%D.c��|dk(rtjd�|}|j|�}t|�}|j	�5|j|d�dk(sJ�|j
d�}ddd�d|vrjddi�	�}jdd
��d|j_
tj||�y#1swY�\xYw)NrUr�rzrLr|r|r}r~r�Tr)
rr�r}r#rPr~rQr�r�r�r�r�r�r�s      r/�test_roundtripr��
s����|�����9�:��I��"�"�4�(�D�!�$�'�I�	�	"�	"�	$�L�����-C�D��I�I�I��%�%�&J�K��L�������(;�Y�'G��H��
���Y���-��F�L�L�����&�+�.�L�L�s�	)C
�
Cc�6�|j|�}t|�5}|j�5|jd�}|j	�}|j�ddd�ddd�t
�gd�k(sJ�y#1swY�$xYw#1swY�(xYwr�)r}r#rPrNr�rUr")rWrr�r�r]s     r/�test_execute_sqlr��
s����"�"�4�(�D�	�4�	 �!�I�
�
&�
&�
(�	!�$�,�,�-A�B�L��'�'�)�C���� �	!�!�
��9�;�;�;�;�		!�	!��!�!�s"�B�2B� B�B	�B�Bc�j�|j|�}tjd|��}t|�y)Nr8r{)r}rr%r�r�s   r/�test_sqlalchemy_read_tabler��
s,���"�"�4�(�D��#�#�F��5�J��Z� r.c��|j|�}tjd|ddg��}tj|j
t
ddg��y)Nr8r9)rpr��SepalLength__1)r}rr%r��assert_index_equalr�rr�s   r/�"test_sqlalchemy_read_table_columnsr��
sQ���"�"�4�(�D��#�#��D�=�-�"@��J����*�,�,�e�]�DT�4U�.V�Wr.c��|j|�}d}tjt|��5t	j
d|��ddd�y#1swYyxYw)Nz!Table this_doesnt_exist not foundr��this_doesnt_existr{)r}rr�r�rr%)rWrr�s   r/�test_read_table_absent_raisesr��
sK���"�"�4�(�D�
-�C�	���z��	-�:����.�D�9�:�:�:�s�A�Ac�*�|}|dk(rtjd�n7d|vsd|vr/|jtjj	d���|j|�}t
jd|�}t|jjjtj�sJ�t|jjjtj�sJ�t|j jjtj"�sJ�t|j$jjtj�sJ�t|j&jjt(�sJ�y)NrU�.types tables not created in sqlite_str fixturer(r'z#boolean dtype not inferred properlyr�r�)rr�r�r�r�r}rr%r�r�rAr�r�r�r�r�r�r�r�r�r�r�s    r/�'test_sqlalchemy_default_type_conversionr��
s'���I��L� ����D�E�	�I�	��Y�!6�����K�K���%J��K�	
��"�"�4�(�D�	�	�	�G�T�	*�B��b�k�k�'�'�,�,�b�k�k�:�:�:��b�i�i�o�o�*�*�B�J�J�7�7�7��b�j�j�&�&�+�+�R�X�X�6�6�6��b�'�'�-�-�2�2�B�K�K�@�@�@��b�(�(�.�.�3�3�V�<�<�<r.c���|j|�}tddgi��}|jd|d��dk(sJ�tjd|�}tj||�y)N�i64l)r��test_bigintFr�rIr�rWrr�rs    r/r�r��
sd���"�"�4�(�D�	����(�	)�B�
�9�9�-�T��9�?�1�D�D�D�
�
�
�
�t�
4�F����"�f�%r.c�f�|}|dk(rtjd�n3d|vr/|jtjj	d���|j|�}t
jd|�}t|jjjtj�sJ�y)NrUr�r'z"sqlite does not read date properlyr�r�)rr�r�r�r�r}rr%r�r�rAr�r�r�r�s    r/�test_default_date_loadr��
s����I��L� ����D�E�	�Y�	�����K�K���%I��J�	
��"�"�4�(�D�	�	�	�G�T�	*�B��b�j�j�&�&�+�+�R�]�]�;�;�;r.r�r�c��|j|�}t|�}td||��}|j}t	j
||�y)N�select * from datetzr�)r}r�r$r�r�r�)rWrr�rr�r�s      r/�!test_datetime_with_timezone_queryr�	sJ���"�"�4�(�D�.�t�4�H�
�.��+�	N�B�
�
�
�C����3��)r.c	���|j|�}t|�}ttt	d|d���d��}|j
}t
j||�y)Nr�rIr�Tr�)r}r�rr"r$r�r�r�)rWrrr�r�s     r/�+test_datetime_with_timezone_query_chunksizer�sX���"�"�4�(�D�.�t�4�H�	��^�2�D�A�
F�G��
�B�
�
�
�C����3��)r.c��|j|�}t|�}tjd|�}t	j
||j
��y)Nr�)r}r�rr%r�r�ru)rWrrrs    r/�!test_datetime_with_timezone_tabler�%sG���"�"�4�(�D�.�t�4�H�
�
�
��$�
/�F����&�(�"3�"3�"5�6r.c�4�|}|j|�}tdtddd��i�}|jd|d��dk(sJ�d	|vr"|djjd
�|d<n!|djj
d�|d<tjd|�}tj||�tjd|�}d|vr0t|jd
t�sJ�t|d�|d<tj||�y)Nr��2013-01-01 09:00:00rK�
US/Pacific��periodsr��test_datetime_tzFr�r)r�zSELECT * FROM test_datetime_tzr'�rr�)r}rrr~�dt�
tz_convert�tz_localizerr%r�r�r$ry�locr�r)rWrr�rrs     r/�%test_datetime_with_timezone_roundtripr�-s���I��"�"�4�(�D�
�	�j�.��l�K�L��H��?�?� 2��E�?�J�a�O�O�O��y� � ��
�(�(�3�3�E�:���
�!��
�(�(�4�4�T�:���
�
�
�
� 2�D�
9�F����&�(�+�
�
�
� @�$�
G�F��9���&�*�*�V�,�c�2�2�2�!�&��+�.��s�����&�(�+r.c� �|j|�}tdtddd�idg��}|jd|d��dk(sJ�t	j
d|�}ttjgdg�	�}tj||�y)
Nri'rIrro�test_datetime_obbFr�r�)
r}rrr~rr%r��NaTr�r�)rWrr�rrs     r/�test_out_of_bounds_datetimer�Ls����"�"�4�(�D��f�h�t�Q��2�3�A�3�?�D��;�;�/�T��;�G�1�L�L�L�
�
�
� 3�T�
:�F��"�&�&��F�8�4�H����&�(�+r.c�"�|j|�}tddd��jd�}tdt	d�i|��}|jd|d�	�dk(sJ�t
jd|d�
�}tj||d��y)
Nz
2018-01-01r��6h�r��freq�numsro�	foo_table�	info_date)r�rpr�r�F)�check_names)
r}r�
_with_freqrr�r~rr%r�r�)rWr�datesrrs     r/�"test_naive_datetimeindex_roundtripr�Ws����"�"�4�(�D��|�Q�T�:�E�E�d�K�E��&�%��(�+�5�9�H��?�?���;�?�O�ST�T�T�T�
�
�
��T�[�
I�F����&�(��>r.c���|}|j|�}tjd|�}d|vrtntj
}t
|jjj|�sJ�tjd|dg��}t
|jjjtj
�sJ�tjd|ddi��}t
|jjjtj
�sJ�tjd|dddii��}t
|jjjtj
�sJ�tjd|dg��}t
|jjjtj
�sJ�tjd|ddi��}t
|jjjtj
�sJ�tjd|dd	dii��}t
|jjjtj
�sJ�y)
Nr�r'r�r�r��formatr�rv�unit)r}rr%r�r�r�r�r�rAr�r�)rWrr�r��
expected_types     r/�test_date_parsingr�ds����I��"�"�4�(�D�	�	�	�G�T�	*�B�&�)�3�F����M��b�j�j�&�&�+�+�]�;�;�;�	�	�	�G�T�	�{�	C�B��b�j�j�&�&�+�+�R�]�]�;�;�;�	�	�	�G�T�	�CV�7W�	X�B��b�j�j�&�&�+�+�R�]�]�;�;�;�	�	�	�����+>� ?�@�
�B�
�b�j�j�&�&�+�+�R�]�]�;�;�;�	�	�	�G�T��~�	F�B��b�m�m�)�)�.�.��
�
�>�>�>�	�	�	�G�T��c�7J�	K�B��b�m�m�)�)�.�.��
�
�>�>�>�	�	�	�G�T��v�s�m�7T�	U�B��b�m�m�)�)�.�.��
�
�>�>�>r.c�D�|}|j|�}ttdd��tjd�d��}|jd|��dk(sJ�t
jd|�}|jdd	�
�}tj||�t
jd|�}|jdd	�
�}d|vrGt|jd
t�sJ�t|d�|d<tj||�ytj||�y)Nr�rK�r�r�r��
test_datetimer�r�rI)�axis�SELECT * FROM test_datetimer'r�r�)r}rrr�rtr~rr%rlr�r�r$ryr�r�r�rWrr�r�rs     r/r�r��s���I��"�"�4�(�D�	��.��:����3��P�
�B��9�9�/�t�9�4��9�9�9��
�
���
6�F�
�[�[��q�[�
)�F����&�"�%��
�
� =�t�
D�F�
�[�[��q�[�
)�F��9���&�*�*�V�,�c�2�2�2�!�&��+�.��s��
���f�b�)�
���f�b�)r.c�8�|}|j|�}ttdd��tjd�d��}tj
|jd<|jd|d�	�dk(sJ�tjd|�}tj||�tjd
|�}d|vrIt|jdt�sJ�t|d
d��|d
<tj||�ytj||�y)Nr�rKr�r�r��rIr�r�Fr�r�r'r�r�r�ru)r}rrr�rtrr�r~rr%r�r�r$ryr�rr�s     r/�test_datetime_NaTr��s����I��"�"�4�(�D�	��.��:����3��P�
�B��V�V�B�F�F�6�N�
�9�9�/�t�5�9�A�Q�F�F�F��
�
���
6�F����&�"�%��
�
� =�t�
D�F��9���&�*�*�V�,�c�2�2�2�!�&��+�h�?��s��
���f�b�)�
���f�b�)r.c��|j|�}ttddd�tddd�gdg��}|jd|d��dk(sJ�t	d|�}|d}t|d�}t
j||�y)	N��rIrJr�r��	test_dateFr�)r}rrr~r%rr�r�)rWrr�rrrs      r/�test_datetime_dater��s����"�"�4�(�D�	�D��q�!�$�d�4��A�&6�7�#��	G�B�
�9�9�+�4�u�9�=��B�B�B�
��d�
+�C�
��X�F��2�c�7�#�H����6�8�,r.c��|}|j|�}ttddd�tddd�gdg��}|jd|d�	�d
k(sJ�t	d|�}tj||�|}tj|d|d��d
k(sJ�tjd
|�}|jd��}tj||�tj|d|d��d
k(sJ�d|vr>tjd|�}|jd��}tj||�tjd|�}tj||�y)N�	rrI�r�r��	test_timeFr�rJ�
test_time2rozSELECT * FROM test_time2c�$�|jd�S�Nz%H:%M:%S.%f��strftime��_s r/�<lambda>z$test_datetime_time.<locals>.<lambda>�s��1�:�:�m�4�r.�
test_time3r'zSELECT * FROM test_time3c�$�|jd�Sr�r�r�s r/r�z$test_datetime_time.<locals>.<lambda>�s��q�z�z�-�8�r.)
r}rrr~r%r�r�rr$�map)rWrrsr�r�rrY�refs        r/�test_datetime_timer��sD���I��"�"�4�(�D�	�D��A�q�M�4��1�b�>�2�S�E�	B�B�
�9�9�+�4�u�9�=��B�B�B�
��d�
+�C����#�r�"�!�K��:�:�b�,��5�A�Q�F�F�F�

�
�
�7��
E�C�
�&�&�4�
5�C����#�s�#��:�:�b�,��E�:�a�?�?�?��9��� � �!;�T�B���f�f�8�9��
���c�3�'�

�
�
�\�4�
0�C����"�c�"r.c�>�|j|�}tdtj��}tdtj��}t||d��}|j
d|d��dk(sJ�tjd|�}tj||dd	�
�y)Nir�g)�s1rw�test_read_writeFr�rIT)�check_dtype�check_exact)r}rr�r��float32rr~rr%r�r�)rWrr�rwr�rs      r/�test_mixed_dtype_insertr��s����"�"�4�(�D�	�	����	*�B�	��2�:�:�	&�B�	�"�B�'�	(�B��9�9�+��U�9�C�q�H�H�H�

�
�
�.��
5�C����"�c�u�$�Gr.c�J�|j|�}tgd�dtjdgd��}|j	d|d��dk(sJ�tjd|�}tj||�tjd	|�}tj||�y)
Nrr�r�r��test_nanFr�rK�SELECT * FROM test_nan)
r}rr�rr~rr%r�r�r$r�s    r/�test_nan_numericr��s����"�"�4�(�D�	��#�r�v�v�s�);�<�	=�B�
�9�9�*�$�e�9�<��A�A�A��
�
�
�D�
1�F����&�"�%��
�
� 8�$�
?�F����&�"�%r.c��|j|�}tgd�tjtjtjgd��}|j	d|d��dk(sJ�tjd|�}tj||�|djd�|d<d|d<tjd	|�}tj||�y)
Nrr�r�Fr�rKr�r�r�)r}rr�rr~rr%r�r�r�r$r�s    r/�test_nan_fullcolumnr��s����"�"�4�(�D�	��"�&�&�"�&�&�"�&�&�)A�B�	C�B�
�9�9�*�$�e�9�<��A�A�A��
�
�
�D�
1�F����&�"�%���g�n�n�X�&�B�s�G��B�s�G�
�
�
� 8�$�
?�F����&�"�%r.c�h�|j|�}tgd�ddtjgd��}|j	d|d��dk(sJ�d|j
d	<t
jd|�}tj||�t
jd
|�}tj||�y)Nrr�r�r�r�Fr�rK�rJr�r�)r}rr�rr~r�rr%r�r�r$r�s    r/�test_nan_stringrs����"�"�4�(�D�	��#�s�B�F�F�);�<�	=�B�
�9�9�*�$�e�9�<��A�A�A��B�F�F�6�N��
�
�
�D�
1�F����&�"�%��
�
� 8�$�
?�F����&�"�%r.c��d|vr:|jjtjj	dd���|}|j|�}t
jddggd�dg�	�}d
}t|�5}|j�5|j||�dk(sJ�	ddd�ddd�|dvrqtjd
|�d�|�}g}|jD]E}tjd|�d�|�}	|j|	jj���Gn1ddlm}
|
|�}|j%|�}|D�cgc]}|d��	}}|dggk(sJ�y#1swY��xYw#1swY��xYwcc}w)Nr|z)ADBC implementation does not create indexTr�r�r�r�r�r��test_to_sql_saves_indexrJ>rUrszASELECT * FROM sqlite_master WHERE type = 'index' AND tbl_name = '�'zPRAGMA index_info(�)rr��column_names)r�r�rr�r�r}rr�r#rPr~rr$r�r�r�r?r��get_indexes)
rWrr�r��tbl_namer��ixs�ix_cols�ix_name�ix_infor�r�r�s
             r/�test_to_sql_save_indexr
!s���
��~�������K�K���B�4�
�
�	
�
�I��"�"�4�(�D�	�	�	�	�-�.��PS�u�
�B�)�H�	�4�	 �7�I�
�
&�
&�
(�	7��#�#�B��1�Q�6�6�6�	7�7��4�4�� � �
�'�j��
+��
��
���x�x�	2�G��(�(�+=�g�Y�a�)H�$�O�G��N�N�7�<�<�.�.�0�1�	2�	'��t�}�����x�(��.1�2��1�^�$�2��2���u�g����+	7�	7��7�7��(3s*�<E2�
E&�&E2�E>�&E/	�+E2�2E;c��|}|j|�}d}|dk7rd|vrddlm}||�}t|�5}|j	�5}|j|�ddd�ddd�y#1swY�xYw#1swYyxYw)N�'CREATE TABLE test_trans (A INT, B TEXT)rsr|rrw)r}r?rxr#rPrN)rWrr�rYrxr��transs       r/�test_transactionsrIs����I��"�"�4�(�D�4�D��$�$��y�)@�#��D�z��	�4�	 � �I�
�
&�
&�
(�	 �E��M�M�$��	 � � �	 �	 �� � �s#�A8�	A,�A8�,A5	�1A8�8Bc�f�|}|j|�}t|�5}|j�5}d}d|vst|t�r|j|�nddlm}||�}|j|�ddd�Gd�dt�}d}t|t�rddlm}||�}	|j�5}|j|�|d��#1swY�cxYw#1swYnxYwn#|$rYnwxYw|j�5|jd	�}	ddd�n#1swYnxYwt	�dk(sJ�|j�5}|j|�|jd	�}
ddd�n#1swYnxYwt
�d
k(sJ�	ddd�y#1swYyxYw)Nrr|rrwc��eZdZy)�1test_transaction_rollback.<locals>.DummyExceptionN)rrrsrtr-r.r/�DummyExceptionrhs��r.rz/INSERT INTO test_trans (A,B) VALUES (1, 'blah')r�zSELECT * FROM test_transrI)r}r#rPryr!rNr?rx�	Exceptionr rQr�)rWrr�r�rrYrxr�ins_sqlrr�s           r/�test_transaction_rollbackrYs����I��"�"�4�(�D�	�4�	 �#�I�
�
&�
&�
(�	$�E�<�D���"�j��N�&K��
�
�d�#�+��D�z���
�
�d�#�	$�	�Y�	�D���i��-�'��7�m�G�	��*�*�,�
.���
�
�g�&�$�W�-�-�-	$�	$��(
.�
.��
.���	��	���
&�
&�
(�	C��&�&�'A�B�C�	C�	C�	C���3�x�1�}��}��
&�
&�
(�	D�E��M�M�'�"��'�'�(B�C�D�	D�	D�	D���4�y�A�~��~�G#�#�#�s��F'�AC�87F'�0C3�C&�C#	�F'�&C/	�+C3�2F'�3C;�8F'�:C;�;F'�D)� 	F'�)D2	�.'F'�#F�8	F'�F
	�F'�'F0c�V�|dk(r/|jtjjd���|j	|�}ddlm}ddlm}d}tj|||��}|jdd}||�}t||�rD|j�5}|j�5|j|�ddd�ddd�n|j|�tj ||�}	t#j$|	|d	�
�y#1swY�RxYw#1swY�DxYw)NrUz(test does not support sqlite_str fixturer�rrwr��test_get_schema_create_tabler{Fr�)r�rr�r�r}r?rxr�r�rr�r�ryr�rkrNr%r�r�)
rWrr�rxr�rr#�
blank_test_df�newcon�returned_dfs
          r/rr�s��
�|������K�K���%O��P�	
��"�"�4�(�D��(�
(�C�����S�d�;�J��$�$�R�a�(�M��j�!�J��$���
�\�\�^�	+�v�����
+����z�*�
+�	+�	+�	
���Z� ��$�$�S�$�/�K����+�}�u�M�
+�
+��	+�	+�s$�D�0D�D�D	�D�D(c�P�|dk(rtjd�|j|�}ddlm}m}ddlm}ddg}dd	g}t||�
�}|jd|��d
k(sJ�|jd|d|i��d
k(sJ�|�}|j|��|jdjdj}	t|	|�sJ�d}
tjt |
��5|jd|dt"i��ddd�|jd|d|d�i��d
k(sJ�|j|��|jdjdj}	t|	|�sJ�|	j$dk(sJ�|jd||��d
k(sJ�|j|��|jdjdj}|jdjdj}t||�sJ�t||�sJ�y#1swY��xYw)NrUr�r)rr6�r5r�r��g�������?T�g�������?Nr��
dtype_testr�rJ�dtype_test2�r�rprArfz&The type of B is not a SQLAlchemy typer�r��dtype_test3�
�single_dtype_test)rr�r}r?rr6�sqlalchemy.schemar5rr~�reflect�tablesr�r�ryr�r�r�r�)
rWrrr6r5rr�r��meta�sqltyper��sqltypea�sqltypebs
             r/�
test_dtyper/�s���|�����9�:��"�"�4�(�D��+���:�D���%�D�	�4��	&�B�
�9�9�,�D�9�1�Q�6�6�6�
�9�9�-�T�#�t��9�E��J�J�J��:�D��L�L�d�L���k�k�-�(�0�0��5�:�:�G��g�t�$�$�$�
2�C�	���z��	-�<�
�	�	�w�D��c�
�	�;�<��9�9�-�T�#�v�b�z�9J�9�K�q�P�P�P��L�L�d�L���k�k�-�(�0�0��5�:�:�G��g�v�&�&�&��>�>�R�����9�9�-�4�t�9�D��I�I�I��L�L�d�L���{�{�.�/�7�7��<�A�A�H��{�{�.�/�7�7��<�A�A�H��h��%�%�%��h��%�%�%�!<�<�s�,H�H%c���|dk(rtjd�|}|j|�}ddlm}m}m}m}ddlm	}tddg�ttddd	�dg�td	dgd
��tddg�d
�}t|�}	d}
|	j|
|��dk(sJ�tj|
|�}|�}|j!|��d|vr|n|}
|j"|
j$}t'|dj(|
�sJ�t'|dj(|�sJ�t'|dj(|�sJ�t'|dj(|�sJ�y)NrUr�r)r�r�r4r�rT��r�rIr�r�r���Bool�Date�Intr4�notna_dtype_testr�rJrfr(r3r4r5r4)rr�r}r?r�r�r4r�r(r5rrrr~rr%r)r*r�ryr�)rWrr�r�r�r4r�r5rr�rr�r+�my_type�col_dicts               r/�test_notna_dtyper9�s_���|�����9�:��I��"�"�4�(�D���+���d�|�$����q�!�,�d�3�4��q�$�i�x�0���d��$�	�D�
�4��B�
�C�
�9�9�#�4�9�(�A�-�-�-����3��%�A��:�D��L�L�d�L�� �I�-�g�7�G��{�{�3��'�'�H��h�v�&�+�+�W�5�5�5��h�v�&�+�+�X�6�6�6��h�u�o�*�*�G�4�4�4��h�w�'�,�,�e�4�4�4r.c
���|dk(rtjd�|j|�}ddlm}m}m}ddlm}d}tt|gd��t|gd	��t|gd	��td
gd��td
gd��d
��}|jd|ddd|d��i��dk(sJ�tjd|�}tj|dj dd�tj|dj dd�k(sJ�|�}	|	j#|��|	j$dj&}
t)|
dj*�t)|
dj*�k(sJ�t-|
dj*|�sJ�t-|
dj*|�sJ�t-|
dj*|�sJ�t-|
dj*|�sJ�y)NrUr�r)�
BigIntegerr4r�rg�Y�B��?r�r��float64r�r�r�)�f32�f64�
f64_as_f32�i32r��test_dtypesFr�r?�)�	precision)r�rpr�r|rArIr>�rfr=r@r�)rr�r}r?r;r4r�r(r5rrr~rr%r��roundr�r)r*r�r�r�ry)rWrr;r4r�r5�Vr�rr+r8s           r/�test_double_precisionrG�s����|�����9�:��"�"�4�(�D���
+��A�	��1�#�Y�/��1�#�Y�/� �!��I�6��1�#�W�-��1�#�W�-�	
�
�B�	�	�	��������!4�5�	�	
�
�	
�	�	
��
�
�]�D�
1�C��8�8�B�u�I�N�N�1�%�r�*�b�h�h�s�5�z���q�7I�2�.N�N�N�N��:�D��L�L�d�L���{�{�=�)�1�1�H��x���#�#�$��H�\�,B�,G�,G�(H�H�H�H��h�u�o�*�*�E�2�2�2��h�u�o�*�*�E�2�2�2��h�u�o�*�*�G�4�4�4��h�u�o�*�*�J�7�7�7r.c������|j|�}ddlm�d��d����fd����fd�}tdgd�i�j	d|�	�d
k(sJ�||�y)Nrr�c�4�d}tj||��S)Nz'SELECT test_foo_data FROM test_foo_datar{)rr$)r�r�s  r/�test_selectz3test_connectable_issue_example.<locals>.test_select,
s��9���!�!�%�Z�8�8r.c�,�|jd|d��y)N�
test_foo_datar�)r�rpr|)r~)r�r�s  r/�test_appendz3test_connectable_issue_example.<locals>.test_append0
s������j�H��Mr.c�(���|�}�||�yrr-)rW�foo_datarMrJs  ��r/�test_connectablez8test_connectable_issue_example.<locals>.test_connectable3
s����t�$���D�(�#r.c����t|��r;|j�5}|j�5�|�ddd�ddd�y�|�y#1swY�xYw#1swYyxYwr)ryr�rk)�connectablerWr�rPs  ��r/�mainz,test_connectable_issue_example.<locals>.main9
se����k�6�*��$�$�&�
+�$��Z�Z�\�+�$�T�*�+�
+�
+�
�[�)�+�+��
+�
+�s!�A�	A�A�A	�A�A'rLrr�rK)r}r�r�rr~)rWrrSr�rMrPrJs   @@@@r/�test_connectable_issue_examplerT$
sh����"�"�4�(�D�)�9�N�$�*�	�?�I�.�/�6�6�O�QU�6�V��	
��	
�	��Jr.�inputr��bar)r��infe0c�J�t|�}|}|j|�}d|vr�tjd�}t	|j
�t	d�kr?d|jvr1tjjd��}|j|�d}tjt|��5|jd	|d
��ddd�y|jd	|d
��dk(sJ�tjd	|�}tj ||�y#1swYyxYw)
Nr(rz1.0.3rWzGH 36465r�zinf cannot be used with MySQLr��foobarFr�rI)rr}rrrr@r�r�r�r�r�r�r~rr%r��assert_equal)	rWrrUr�r�rr�r�rs	         r/�test_to_sql_with_negative_npinfr[H
s��
�5�	�B��I��"�"�4�(�D��)��
�%�%�i�0���7�&�&�'�'�'�*:�:�w�"�*�*�?T��;�;�$�$�J�$�7�D�����%�-��
�]�]�:�S�
1�	<��I�I�8��U�I�;�	<�	<��y�y�h�D��y�>�!�C�C�C�� � ��4�0��
����C� �	<�	<�s�5D�D"c�x���
�|dk(rtjd�|j|�}ddlm�m�m�
m}ddlm	}m
}d}td|gi�}|�}G���
fd�d	|�}||�5}	|	j�5|	j�}|jj|�|	j!||�
��|	j#�t%j&||j(�|��}
ddd�ddd�t+j,
|�y#1swY�(xYw#1swY�,xYw)NrUz&test does not work with str connectionr)r2r��Unicoder�)�Session�declarative_basez
Hello, World!�spamc�X��eZdZdZddgiZW�W�d��ZW�W�d�d��Zy	)
�'test_temporary_table.<locals>.Temporary�	temp_test�prefixes�	TEMPORARYT��primary_keyr�F)�nullableN)rrrsrt�
__tablename__�__table_args__�idr`)r2r�r]s���r/�	Temporaryrb~
s0���#�
�$�{�m�4��
�G��
.���g�b�k�E�2�r.rl)r`)rrp)rr�r}r?r2r�r]r��sqlalchemy.ormr^r_rrkr��	__table__rm�add�flushrr$r`r�r�)rWrr�r^r_r,r�Baserl�sessionr�r2r�r]s           @@@r/�test_temporary_tablersh
s����|�����<�=��"�"�4�(�D����
 �I��&�9�+�.�/�H���D�3�3�D�3�
���J�'�
�]�]�_�	J��%�%�'�D����&�&�t�,��K�K�	�y�1�2��M�M�O��#�#��y�~�~�(>�D�I�B�	J�J����"�h�'�
	J�	J��J�J�s%�1D0�A;D$�=D0�$D-	�)D0�0D9c�b�|dk(sd|vr/|jtjjd���|j	|�}d}t|�5}tjt|��5|j|dd�	�ddd�ddd�y#1swY�xYw#1swYyxYw)
Nrsr|z9SQLiteDatabase/ADBCDatabase does not raise for bad enginer�z*engine must be one of 'auto', 'sqlalchemy'r�r��
bad_engine�r�)	r�rr�r�r}r#r�r�r~)rWrr�r�r�s     r/�test_invalid_enginerw�
s������6�T�>�����K�K���R�
�
�	
��"�"�4�(�D�
6�C�	�4�	 �N�I�
�]�]�:�S�
1�	N����[�-���M�	N�N�N�	N�	N��N�N�s$�B%�3B�B%�B"	�B%�%B.c�F�|j|�}t|�5}|j�5|j|dd��dk(sJ�|j	d�sJ�	ddd�ddd�t|�}t
|d�}||k(sJ�y#1swY�0xYw#1swY�4xYw)z `to_sql` with the `engine` paramr��autorvrLN)r}r#rPr~r�r�r�res      r/�test_to_sql_with_sql_enginerz�
s����"�"�4�(�D�	�4�	 �6�I�
�
&�
&�
(�	6��#�#�K��v�#�N�RS�S�S�S��&�&�}�5�5�5�	6�6�
�k�"�K��$�
�.�H��{�"�"�"�
	6�	6��6�6�s"�B�-B�B�B	�B�B c��|j|�}tjdd�5t|�5}|j	�5|j|d�dk(sJ�|j
d�sJ�	ddd�ddd�t|�}t|d�}||k(sJ�	ddd�y#1swY�9xYw#1swY�=xYw#1swYyxYw)N�
io.sql.enginer?r�rL�	r}r��option_contextr#rPr~r�r�r�res      r/�test_options_sqlalchemyr�
s����"�"�4�(�D�	�	�	�?�L�	9�'�
�t�
$�	:�	��*�*�,�
:� �'�'��]�C�q�H�H�H� �*�*�=�9�9�9�
:�	:�
�+�&���d�M�2���;�&�&�&�'�'�
:�
:��	:�	:��'�'��:�C�B5�+B)�1B5�9&C�)B2�.B5�5B>	�:C�C
c��|j|�}tjdd�5t|�5}|j	�5|j|d�dk(sJ�|j
d�sJ�	ddd�ddd�t|�}t|d�}||k(sJ�	ddd�y#1swY�9xYw#1swY�=xYw#1swYyxYw)Nr|ryr�rLr}res      r/�test_options_autor��
s����"�"�4�(�D�	�	�	�?�F�	3�'�
�t�
$�	:�	��*�*�,�
:� �'�'��]�C�q�H�H�H� �*�*�=�9�9�9�
:�	:�
�+�&���d�M�2���;�&�&�&�'�'�
:�
:��	:�	:��'�'�r�c���tjd�ttd�t�sJ�tjdd�5ttd�t�sJ�ttd�t�sJ�	ddd�tjdd�5ttd�t�sJ�ttd�t�sJ�	ddd�y#1swY�`xYw#1swYyxYw)Nr?r|ry)rrryr"rr�r~r-r.r/�test_options_get_enginer��
s���
����%��j��.�0@�A�A�A�	�	�	�?�L�	9�F��*�V�,�.>�?�?�?��*�\�2�4D�E�E�E�F�
�	�	�?�F�	3�F��*�V�,�.>�?�?�?��*�\�2�4D�E�E�E�F�F�	F�F��F�F�s�7C�7C*�C'�*C3c��yrr-r-r.r/�"test_get_engine_auto_error_messager��
s��	r.�funcr�r$c�p�|}|j|�}d}|}	|	j||dd��tjd|�5t	t|�d|��||��}
ddd�||||�}tj
|�d|vr/|jtjjd	�
��tjd|�5t	t|�d|��||d��}||||�}|D]}
tj|
|��	ddd�y#1swY��xYw#1swYyxYw)
NrzFr��r�rpr�r|�mode.string_storage�Select * from ��
dtype_backendr|z(adbc does not support chunksize argumentr�rK)rpr�r�)r}r~r�r~rmr�r�r�rr�r��
rWr�string_storager�r��dtype_backend_data�dtype_backend_expectedr�r�r�rr�iterators
             r/�test_read_sql_dtype_backendr��
sL���I��"�"�4�(�D��E�	�B��I�I�5�d�%�9�I�E�	�	�	�0�.�	A�
�"���T�"��U�G�$�d�-�
��
�&�n�m�Y�O�H����&�(�+�
�������K�K���%O��P�	
�
�	�	�0�.�	A�	4�$�7�2�t�$��U�G�$��'��	
��*�.�-��S���	4�F��!�!�&�(�3�	4�	4�	4�
�
��	4�	4�s�D �AD,� D)�,D5r%c�v�d|vr3d|vr/|jtjjd���|}|j	|�}d}|}	|	j||dd��t
jd	|�5tt|�|||�
�}
ddd�||||�}tj
|�d|vryt
jd	|�5tt|�|||d��}||||�}|D]}
tj|
|��	ddd�y#1swY��xYw#1swYyxYw)
Nr'r|zhSQLite actually returns proper boolean values via read_sql_table, but before pytest refactor was skippedr�rzFr�r�r�r�rK)r�r�)r�rr�r�r}r~r�r~rmr�r�r�s
             r/�!test_read_sql_dtype_backend_tabler�
sV���4��F�$�.�����K�K���M�
�
�	
��I��"�"�4�(�D��E�	�B��I�I�5�d�%�9�I�E�	�	�	�0�.�	A�M�"���T�"�5�$�m�L��M�%�n�m�Y�O�H����&�(�+�
����	�	�	�0�.�	A�	4�$�7�2�t�$���'��	
��*�.�-��S���	4�F��!�!�&�(�3�	4�	4�	4�M�M��	4�	4�s�:D#�AD/�#D,�/D8)r�r%r$c���|j|�}d}|}|j||dd��d}tjt|��5tt|�||d��ddd�y#1swYyxYw)	NrzFr�r�zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r��numpyr�)r}r~rr�r�rmr�)rWrr�r�r�r�r�s       r/�)test_read_sql_invalid_dtype_backend_tabler�:sv���"�"�4�(�D��E�	�B��I�I�5�d�%�9�I�E�	!��
���z��	-�>����D��%��W�=�>�>�>�s�A+�+A4c���ttdtjdgd��tgd�d��tdtjdgd��tgd	�d��gd
�gd�gd�gd
�d��S)NrIrKrAr�r�r��@�Float64�r�r�r�)TFN�TFTr�r�r�N�r�r�r��d�e�f�g�h)rrr�rr-r.r/r�r�Js]�����B�F�F�A��g�6��	��1���b�f�f�c�*�)�<���y�9�$�$� �!�		
��r.c��dd�}|S)Nc��|dk(rpttjgd�tj���}ttjddtj
gtj���}n�|dk(rNt
jd�}ddlm	}||jgd���}||jgd	���}nMt
jd�}t|jgd���}t|jgd	���}ttd
tjdgd��tgd
�d��tdtjdgd��tgd�d��tddtj
gd��tgd�d��||d��}|dk(rYt
jd�}ddlm	}t|jD�cic]}|||j||d�����!c}�}d|vsd|vr/|dk(r|jddd��}|S|jddd��}|Scc}w)N�pythonrr�r�r�r�r)�ArrowExtensionArrayr�rIrKrAr�r�r�r�r�TF�booleanr�r�)�from_pandasr(r'�numpy_nullable)r�r�zint64[pyarrow])rr�r��object_r��NArr�
pandas.arraysr�rrrrr�r�)	�storager�r��string_array�string_array_narr�r�r�s	         r/r�z$dtype_backend_expected.<locals>.func\s����h��&�r�x�x��r�z�z�'R�S�L�)�"�(�(�C��b�e�e�3D�B�J�J�*W�X�O�
�i�
'��$�$�Y�/�B�9�.�r�x�x��/H�I�L�1�"�(�(�;K�2L�M�O��$�$�Y�/�B�+�B�H�H�_�,E�F�L�.�r�x�x�8H�/I�J�O�
��Q�����N�'�:��I�W�5��S�"�&�&�#�.�i�@��O�9�=��T�5�"�%�%�0�	�B��/�y�A�!�$�	
�
���I�%��$�$�Y�/�B�9�� "�z�z����,�R�X�X�b��g�4�X�-P�Q�Q���B��i��8�y�#8�� 0�0��Y�Y�W�7�;�<���	��Y�Y�%5�<L�M�N���	��s�$H<�rprr-)r�s r/r�r�Zs��1�f�Kr.c��d|vr9|jjtjj	d���|j|�}ddd�}t
ddg�	�j|�}|j�}|jd
|dd�
�td||d��D]}tj||��y)Nr|r�r�r�r�r�r�r�r�rzFr�r�zSELECT * FROM testrI)rAr�)
r�r�rr�r�r}rr�rr~r$r�r�)rWrr�r�rrs      r/�test_chunksize_empty_dtypesr��s�����~�������K�K���%R��S�	
��"�"�4�(�D���
*�F�	�C��:�	&�	-�	-�f�	5�B��w�w�y�H��I�I�6�t�5�I�I�F� �����	�0��	���f�h�/�
0r.r�r�c�t�|j|�}d}tgd�dd��}|j||dd��tt|�d|��|d	t
ji|�
�}ttgd�t
j��tgd�|d
k(sdnd��d��}tj||�y)Nrzr�r�r�Fr�r�r�r�)rAr�r�)r�r�r�r�r�rA)
r}rr~rmr�r�r<rr�r�)rWrr�r�r�r�rrs        r/�test_read_sql_dtyper��s���
�"�"�4�(�D��E�	���+�	,�B��I�I�5�d�%�9�I�E�
�W�R��
�
��� ���B�J�J��#�	�F���	����4���%2�6F�%F�g�G��	
��H����&�(�+r.c���|}d}tdddd�dddd�g�}|jd|�tjt|��5|jd|dd�	�ddd�y#1swYyxYw)
NzxStarting with pandas version 3.0 all arguments of to_sql except for the arguments 'name' and 'con' will be keyword-only.rIrJrKr��exampler�r�r�)rr~r�r�rG)rWrWr�r�s    r/�test_keyword_deprecationr��sw���D�	;��
�!�!�!�,�A�A�A�.F�G�	H�B��I�I�i���	�	#�	#�M��	=�>�
�	�	�)�T�4�9�	�=�>�>�>�s�A&�&A/c���|}tdddgid��}|jd|d��dk(sJ�tjd�5t	j
d|�ddd�y#1swYyxYw)	Nr�rIrJr�r��test_bigintwarningFr�)rr~r�r�rr%�rWrWr�s   r/�test_bigint_warningr��sm���D�	�C�!�Q��=��	0�B�
�9�9�.�D��9�F�!�K�K�K�	�	#�	#�D�	)�7����/��6�7�7�7�s�A"�"A+c��|}tddgddgd��}tjtd��5|j	d|d	d
��ddd�y#1swYyxYw)NrIrJrKrL�rrzEmpty table name specifiedr�r�r�Fr{)rrr�r�r~r�s   r/�test_valueerror_exceptionr��sZ���D�	�Q��F�Q��F�3�	4�B�	���z�)E�	F�G�
�	�	�r�t�y��	�F�G�G�G�s�A�Ac�:�
���|}ddlm�
m�m�ddlm}m}|�}G�
��fd�d|�}|j�5|jj|�ddd�||��}|�5}tddgdd	gd
��}|jd|dd
��dk(sJ�|j�|j|j|j�}	t|	�}ddd�t!j"�ddgk(sJ�y#1swY��xYw#1swY�2xYw)Nr�r2r�r6)r_�sessionmakerc�J��eZdZdZW�W�d��ZW�W�d��Zy)�,test_row_object_is_named_tuple.<locals>.Testr�Trf�2N)rrrsrtrirk�
string_columnr�s���r/�Testr��s"���$�
�
�G��
.���v�b�z�*�
r.r�rfrI�hello�world)rkr�r�Fr�r�rJrkr�)r?r2r�r6rmr_r�rkrB�
create_allrr~rVr�rkr�r"r�)
rWrWr_r��	BaseModelr�r^rrr��
test_queryr2r�r6s
          @@@r/�test_row_object_is_named_tupler��s����D�
��
�
!�"�I�+�+�y�+�

����,����%�%�d�+�,���%�G�	��#�g�
�q�!�f���7I�J�
K���I�I�<�T��)�I�T��
�	
�
�	�����]�]�4�7�7�D�,>�,>�?�
�
�z�
"��#���
�
���o�6�6�6�6�,�,��#�#�s�D�2A.D�D�Dc�X�|}tjd�d}tdddgi�}|j||dd��t	j
d	d
�5t
||�}ddd�d}tdddgi|tdg|���
�}tj|�y#1swY�@xYw)Nr�rzr��x�yFr�)rpr�r|zfuture.infer_stringTzstring[pyarrow_numpy]r�)rAr�)
rrrr~r�r~r%rr�r�)rWrWr�r�rrArs       r/�test_read_sql_string_inferencer�
s����D�
���	�"��E�	�C�#�s��$�	%�B��I�I�e��U�i�I�@�	�	�	�0�$�	7�-���t�,��-�
$�E��	�s�C�j����s�e�5�0I��H����&�(�+�-�-�s�
B � B)c	��|}tdtdddd�gid��}|jd|dd	�
�tjd|�j
d}|d
k(sJ�y�N�ti�r��r�r�rzr�F)r|r��select * from test�rrz2020-12-31 12:00:00.000000)rrr~r�r�r�)rWrWr�rs    r/�test_roundtripping_datetimesr�sf���D�	�C�(�4��R��4�5�6�>N�	O�B��I�I�f�d�i�u�I�=�
�[�[�-�t�
4�
9�
9�$�
?�F��1�1�1�1r.c#��K�tjtjdtj���5}|5}|��ddd�ddd�y#1swY�xYw#1swYyxYw�w)Nro)�detect_types)rprrzr��PARSE_DECLTYPESrqs  r/�sqlite_builtin_detect_typesr�&sc����	�	�	����
��1H�1H�I�
��	�
�	�T��J�	���	�	����s3�9A,�A �A�A �	A,�A	�A � A)�%A,c	���|}tdtdddd�gid��}|jd|dd	�
�tjd|�j
d}|t
d
�k(sJ�yr�)rrr~r�r�r�r)r�rWr�rs    r/�)test_roundtripping_datetimes_detect_typesr�/sk��&�D�	�C�(�4��R��4�5�6�>N�	O�B��I�I�f�d�i�u�I�=�
�[�[�-�t�
4�
9�
9�$�
?�F��Y�;�<�<�<�<r.c��|}tddgddgddgd��}|j�5}|j�5|jd�|jd	�ddd�ddd�|j	d
|d��dk(sJ�|j	d
|dd��dk(sJ�|j	d|dd��dk(sJ�tjd
|�}tj||�tjd
|�}tj||�tjd
|d��}tj||�tjd|d��}tj||�d}tjt|��5tjd|d��ddd�|j�5}|j�5|jd�|jd	�ddd�ddd�|j	d|dd��dk(sJ�|j	d|ddd��|j	d|ddd��dk(sJ�tjd|d��}	tjt||gd��|	�y#1swY��,xYw#1swY��1xYw#1swY��xYw#1swY��xYw#1swY��xYw)NrIrJr�r�r�r	r
z$DROP SCHEMA IF EXISTS other CASCADE;zCREATE SCHEMA other;�test_schema_publicFr��test_schema_public_explicitr*)r�rpr�r��test_schema_other�otherr+z!Table test_schema_other not foundr�)r�rpr�r�r�)r�rpr�r�r|r�Tr�)
rr�rkr�r~rr%r�r�rr�r�r)
r1rWr�rpr�r�r��res4r�rs
          r/�test_psycopg2_schema_supportr�8s���%�D�
�Q��F�S�#�J��c�
�K�	L�B�
����8�3�
�Y�Y�[�	8���� F�G���� 6�7�	8�8��9�9�.�D��9�F�!�K�K�K�
�	�	�.����		�	
�
�
	
��	
�	�	�	�*��E�'�	�R�VW�W��W����2�D�9�D����"�d�#����;�T�B�D����"�d�#����;�T�(�S�D����"�d�#����1�4��H�D����"�d�#�
-�C�	���z��	-�G����.��X�F�G�
����8�3�
�Y�Y�[�	8���� F�G���� 6�7�	8�8�	�	�	�*��W�E�	�R�VW�W��W��I�I�
 �������	�	�	�$�����	�	
�
�	
�	�	
��
�
�0�$�w�
G�C����&�"�b���=�s�C�}	8�	8��8�8��<G�G��	8�	8��8�8�sR�J�#J�J�
J �;J8�#J,�/J8�J	�J�J� J)�,J5	�1J8�8Kc��|}ddlm}|d�}|j�5}|j�5|j	|�ddd�ddd�d}tj||�}tdtdd��gd	zgd
dgd	z��}tj||�tj|d
��5}|jd�ddd�y#1swY��xYw#1swY��xYw#1swYyxYw)Nrrwz�
    CREATE TABLE person
    (
        id serial constraint person_pkey primary key,
        created_dt timestamp with time zone
    );

    INSERT INTO person
        VALUES (1, '2021-01-01T00:00:00Z');
    zHSELECT * FROM "person" AS p1 INNER JOIN "person" AS p2 ON p1.id = p2.id;rI�2021r�r�rJrk�
created_dtr�Tr��person)r!rxr�rkrNr�r�rrr�r�rr r)	r1rWrxr?rprrrr�s	         r/�test_self_join_date_columnsr��s���&�D�#��		��L�
����&�3�
�Y�Y�[�	&��K�K��%�	&�&�
	S���[�[��D�
)�F��
�Y�v�%�
(�	)�A�	-�.��|�8L�q�8P��H����&�(�+�

�����	5�'�����X�&�'�'�	&�	&��&�&��'�'�s.�C#�C�C#�<C/�C 	�C#�#C,�/C8c��|}tgd�gd�d��}tj|�5}|j�5|j	|d�dk(sJ�	ddd�|jd�sJ�|j�5|j
d�ddd�|jd�rJ�	ddd�y#1swY�cxYw#1swY�2xYw#1swYyxYw)Nr�r�r��drop_test_framerL)rrr rPr~r�r)rWrWr�r�s    r/�test_create_and_drop_tabler��s����D��#7�@T�U�V�J�	����	�	:�)�
�
&�
&�
(�	H��#�#�J�0A�B�a�G�G�G�	H��"�"�#4�5�5�5�
�
&�
&�
(�	4�� � �!2�3�	4��&�&�'8�9�9�9�9�	:�	:�	H�	H��
	4�	4��
	:�	:�s:�C�B6�+C�?C�C�6B?	�;C�C	�C�Cc���|}ttddd�tddd�gdg��}|jd|d��dk(sJ�td	|�}t	j
||j
t��y)
Nr�rIrJr�r�r�Fr�zSELECT * FROM test_date)rrr~r$r�r�r�r�)rsrWr�rs    r/�test_sqlite_datetime_dater��sn���D�	�D��q�!�$�d�4��A�&6�7�#��	G�B�
�9�9�+�4�u�9�=��B�B�B�
�2�D�
9�C����#�r�y�y��~�.r.�tz_awareFTc�f�|}|stddd�tddd�g}n7tddd��}t|j��j	d	��}t|d
g��}|j
d|d
��dk(sJ�td|�}|j	d��}tj||�y)Nr�rrIr�r�rJr�r�c�"�|j�Sr)�timetz)r�s r/r�z+test_sqlite_datetime_time.<locals>.<lambda>�s���	�	��r.r�r�r�Fr�zSELECT * FROM test_timec�$�|jd�Sr�r�r�s r/r�z+test_sqlite_datetime_time.<locals>.<lambda>�s���
�
�=� 9�r.)
rrr�
to_pydatetimer�rr~r$r�r�)r�rsrW�tz_times�tz_dtr�rrs        r/�test_sqlite_datetime_timer��s����D����A�q�M�4��1�b�>�2���0�!��M���%�-�-�/�0�4�4�5K�L��	�8�c�U�	+�B�
�9�9�+�4�u�9�=��B�B�B�
�2�D�
9�C��v�v�9�:�H����#�x�(r.c�~�|jd|�d��}|D]\}}}}}}	||k(s�|cStd|�d|�d���)NzPRAGMA table_info(rzTable z	, column z
 not found)rNr�)
rWr��column�recs�cidr��ctype�not_null�default�pks
          r/�get_sqlite_column_typer�s^���<�<�,�U�G�1�5�6�D�37��/��T�5�(�G�R��6�>��L���v�e�W�I�f�X�Z�@�
A�Ar.c���|}ddg}ddg}t||��}|jd|��dk(sJ�|jd	|dd
i��dk(sJ�t|dd�dk(sJ�t|d	d�d
k(sJ�d
}tjt
|��5|jd|dti��ddd�|jd|d
��dk(sJ�t|dd�d
k(sJ�t|dd�d
k(sJ�y#1swY�GxYw)Nr�r�r r!r�r"r�rJr#�STRINGr$r�z!B \(<class 'bool'>\) not a stringr�r�r')rr~rrr�r��bool)rsrWrr�r�r�s      r/�test_sqlite_test_dtyper�s ���D���:�D���%�D�	�4��	&�B�
�9�9�,�D�9�1�Q�6�6�6�
�9�9�-�T�#�x��9�I�Q�N�N�N�"�$��c�:�i�G�G�G�!�$�
�s�;�x�G�G�G�
.�C�	���z��	-�=�
�	�	�w�D��d��	�<�=��9�9�-�4�x�9�H�A�M�M�M�!�$�(;�S�A�X�M�M�M�!�$�(;�S�A�X�M�M�M�
=�=�s�C-�-C6c�b�|}tddg�ttddd�dg�tddgd��tddg�d�}t|�}d	}|j||�
�dk(sJ�t	||d�d
k(sJ�t	||d�dk(sJ�t	||d�d
k(sJ�t	||d�dk(sJ�y)NTr1r�rIr�r�r�r2r6r�rJr3r�r4r+r5r4�REAL)rrrr~r)rsrWrr�rs     r/�test_sqlite_notna_dtyper	�s����D���d�|�$����q�!�,�d�3�4��q�$�i�x�0���d��$�	�D�
�4��B�
�C�
�9�9�#�4�9�(�A�-�-�-�!�$��V�4�	�A�A�A�!�$��V�4��C�C�C�!�$��U�3�y�@�@�@�!�$��W�5��?�?�?r.c���|}tddgddggddg��}d}tjt|�	�5|j	d
|��ddd�tgd��D]|\}}|j	||��dk(sJ�t
j||�tddgddggd|g��}d
|d��}|j	||��dk(sJ�t
j||��~y#1swY��xYw)NrIrJrKrLr�r�r�z$Empty table or column name specifiedr�r�r�)
ztest_weird_name]ztest_weird_name[ztest_weird_name`ztest_weird_name"ztest_weird_name'z_b.test_weird_name_01-30z"_b.test_weird_name_01-30"�99beginswithnumber�12345r�test_weird_col_namer�)rrr�r�r~�	enumerater�table_exists)rsrWr�r��ndx�
weird_namer�c_tbls        r/�test_sqlite_illegal_namesrs����D�	�Q��F�Q��F�#�c�3�Z�	8�B�
0�C�	���z��	-�%�
�	�	�r�t�	�$�%�%�	
�
�&���Z��y�y�j�d�y�3�q�8�8�8�����T�*��!�Q��!�Q��(�3�
�2C�D��%�c�!�W�-���z�z�u�$�z�/�1�4�4�4������%�)&�%�%�s�C�C'c��tdjtdjtjdjt
djtdjtdjtd�d�tjdjtdji	}g}|D]D}t|t�r
t|�rd}|t|�}|j||���F|t|�zS)Nz'{}'z{:.8f}z{:d}c��y)N�NULLr-)r�s r/r�zformat_query.<locals>.<lambda>+s�r.z{:.10f}z'{!s}')rr�r�r��str_�bytesrSrlr�r<rryrr�rJ)rri�_formatters�processed_args�arg�	formatters      r/�format_queryr#s����&�-�-��V�]�]�
������
�v�}�}�
�x����V�]�]��T�
�$�
�
�
�I�$�$��h�o�o�
�K��N��.���c�5�!�d�3�i��C���S�	�*�	����i��n�-�.���~�&�&�&r.c��tj|�5}|j|�j�}ddd��dSt	|�S#1swY�xYw)z#Replace removed sql.tquery functionN)rr#rNr�r")r�rpr�rs    r/�tqueryr:sS��	�	�	�s�	#�3�z�� � ��'�0�0�2��3��;�4�-�D��I�-�3�3�s� A
�
Ac	�@�ttjjd�j	d�tt
d�t��tddd���	�}tj|d
|d��dk(sJ�tjd
|�}|j|_|}tj||�dgt|�z|d<|j!�}ttj"t|��tj$��dz}|j!�|d<tj|d|d��dk(sJ�tjd|d��}|j!�}||_d|j_tj||�y)NrJ�r&rL�ABCDr��
2000-01-01r&r�r�r�rFr�zselect * from test_tabler��txt�Idx�test_table2zselect * from test_table2r�)rr�r�r�r�rr"r�rrr~r�r�r�r�r�rrtr�r�)rsr�rr�frame2�new_idxs      r/�test_xsqlite_basicr)AsF���
�	�	���a� �0�0��9��d�6�l�&�1���r��<�
�E�
�:�:�e�,�N�%�P�TV�V�V�V�
�\�\�4�n�
E�F��;�;�F�L��H����&�%�(��5�3�u�:�%�E�%�L�
�Z�Z�\�F��B�I�I�c�&�k�*�"�(�(�;�b�@�G��L�L�N�F�5�M��:�:�f�=�n�E�R�VX�X�X�X�
�\�\�5�~�QV�
W�F��z�z�|�H��H�N��H�N�N�����(�F�+r.c	�n�ttjjd�j	d�tt
d�t��tddd���	�}tj|jd
<tj|d�}|j�}|j|�d}|j�D]\}}t!|g|���}t#||�
�� |j%�tj&d|�
�}|j(|_t+j,||d��y)NrJr!r"r�r#r&r�r�r�r�rzz(INSERT INTO test VALUES (%s, %s, %s, %s)r{r�g����MbP?)�rtol)rr�r�r�r�rr"r�rrr�rr�rMrN�iterrowsrrrVr�r�r�r�)	rsr�r#rZ�insr�r]�fmt_sqlrs	         r/�test_xsqlite_write_row_by_rowr/\s����
�	�	���a� �0�0��9��d�6�l�&�1���r��<�
�E�
�v�v�E�J�J�t������v�.�J�
�
�
�
!�C��K�K�
��
4�C��.�.�"�,���3��s�)�S�)���w�N�+�,�����
�\�\�.�N�
C�F��;�;�F�L����&�%�d�3r.c	��ttjjd�j	d�tt
d�t��tddd���	�}tj|d
�}|j�}|j|�d}|jd}tj|�5}|j|t|��ddd�|j!�tj"d
|�}|j$dd|_t'j(||dd�y#1swY�]xYw)NrJr!r"r�r#r&r�r�r�rzz$INSERT INTO test VALUES (?, ?, ?, ?)rr�rI)rr�r�r�r�rr"r�rrr�rMrNr�r#rJrVr�r�r�r�)rsr�r#rZr-r]r�rs        r/�test_xsqlite_executer1ss����
�	�	���a� �0�0��9��d�6�l�&�1���r��<�
�E�
����v�.�J�
�
�
�
!�C��K�K�
��
0�C�
�*�*�Q�-�C�	�	�	�~�	.�,�*����3��c�
�+�,�����
�\�\�.��
?�F��;�;�r��?�F�L����&�%���)�,�
,�,�s�<D4�4D=c	�"�ttjjd�j	d�tt
d�t��tddd���	�}tj|d
�}|j�}|D]5}|jd�}t|�dk(s�#|dd
k(s�,|ddk(r�5J�tj|d
d
dg��}|j�}d|vsJ�|j�}|j|�y)NrJr!r"r�r#r&r�r�r�rz� rr�rI�DATETIME)r�zPRIMARY KEY ("A", "B"))rr�r�r�r�rr"r�rrr��
splitlinesr�r�rMrN)rsr�r#�lines�line�tokensrZs       r/�test_xsqlite_schemar9�s����
�	�	���a� �0�0��9��d�6�l�&�1���r��<�
�E�
����v�.�J��!�!�#�E��+�����C����v�;�!���q�	�S� 0��!�9�
�*�*�*�+�
����v�S�#�J�?�J��!�!�#�E�#�z�1�1�1�
�
�
�
!�C��K�K�
�r.c�x�d}|j�}|j|�tj|�5}|jd�|jd�t	j
tjd��5|jd�ddd�ddd�y#1swY�xYw#1swYyxYw)N�c
    CREATE TABLE test
    (
    a TEXT,
    b TEXT,
    c REAL,
    PRIMARY KEY (a, b)
    );
    �,INSERT INTO test VALUES("foo", "bar", 1.234)z,INSERT INTO test VALUES("foo", "baz", 2.567)zExecution failed on sqlr�z(INSERT INTO test VALUES("foo", "bar", 7))rMrNrr#rr�rx)rsr#rZr�s    r/�test_xsqlite_execute_failr=�s����J��
�
�
!�C��K�K�
��	�	�	�~�	.�K�*����I�J����I�J�
�]�]�3�,�,�4M�
N�	K����I�J�	K�	K�K�	K�	K��	K�K�s$�AB0�B$�B0�$B-	�)B0�0B9c���d}tjtjd��5}|j	�}|j|�t
j|�5}|jd�ddd�ddd�d}tjtj|��5td��ddd�y#1swY�OxYw#1swY�SxYw#1swYyxYw)Nr;ror<z$Cannot operate on a closed database.r�r�r{)rprrzr�rMrNrr#rr�rDr)r#rWrZr�r�s     r/�&test_xsqlite_execute_closed_connectionr?�s����J�
�	�	�G�O�O�J�7�	8�O�D��k�k�m�����J��
�
"�
"�4�
(�	O�J����M�N�	O�	O�1�C�	���w�/�/�s�	;�/��#��.�/�/�		O�	O��	O�O��/�/�s/�7C�"C�4C�+C�C	�C�C�C#c��tdtjd�i�}tj||dd��dk(sJ�y)N�Fromr��testkeywordsF�rpr�r�)rr��onesrr~)rsr�s  r/�$test_xsqlite_keyword_as_column_namesrE�s7��	�F�B�G�G�A�J�'�	(�B��:�:�b�n�>��O�ST�T�T�Tr.c��tddgdg��}tj||dd��dk(sJ�|}td�|j	d	�D��}|d
k(sJ�tj
d	|�}t
j||�y)NrIrJ�c0r��mono_dfFrCc3�&K�|]	}|d���y�w)rNr-)�.0�my_c0s  r/�	<genexpr>z4test_xsqlite_onecolumn_of_integer.<locals>.<genexpr>�s����O�u�%��(�O�s�zselect * from mono_dfrK)rrr~�sumrNr�r�r�)rsrH�con_x�the_sumrs     r/�!test_xsqlite_onecolumn_of_integerrP�s�����A����/�G��:�:�g�>�	��O�ST�T�T�T��E��O��
�
�6M�(N�O�O�G��a�<��<�
�\�\�1�5�
9�F����&�'�*r.c��tddgddgd��}tgd�gd�d��}d}d	|��}d
}tjt|��5t	j
|||d�
�ddd�t
||�t	j
|||d�
�d}tjt|��5t	j
|||d�
�ddd�t	j
|||dd��t||��ddgk(sJ�t	j
|||dd��dk(sJ�t||��gd�k(sJ�t
||�t	j
|||dd��dk(sJ�t||��ddgk(sJ�t	j
|||dd��dk(sJ�t||��gd�k(sJ�t
||�y#1swY��NxYw#1swY��xYw)NrIrJr�r�r�r\)r�r��E�table_if_existszSELECT * FROM z*'notvalidvalue' is not valid for if_existsr��
notvalidvalue)r�rpr�r|r�z&Table 'table_if_exists' already existsr�F)r�rpr�r|r�r{r�rrK)�rKr��rLr��r�rRr�)r�rrUrVrW)rrr�r�rr~rr)rs�df_if_exists_1�df_if_exists_2r��
sql_selectr�s      r/�test_xsqlite_if_existsr[�s����A���c�
�C�D�N��	�?�K�L�N�"�J�!�*��.�J�
6�C�	���z��	-�
��
�
� ���%�		
�
��z�>�*��J�J��.�z�V��3�C�	���z��	-�
��
�
� ����		
�
��J�J���
�����*�.�1�h��5I�I�I�I��
�
� �����	
�
�	
�	�	
��*�.�1�5S�S�S�S��z�>�*�	�
�
� �����	
�
�	
�	�	
��*�.�1�h��5I�I�I�I��
�
� �����	
�
�	
�	�	
��*�.�1�6�����z�>�*�Q
�
��
�
�s�	F/�-F<�/F9�<G)rXr)r�r�)r��
list[dict])r�r\r�r�)r�r)r�r�)r�r�rW�Lsqlite3.Connection | sqlalchemy.engine.Engine | sqlalchemy.engine.Connection)r�r�rWr]r�r(,�
__future__rrprrPrrrrr�r	�pathlibrrz�typingrr9r�r�r�pandas._libsr
�
pandas.compatrr�pandas.compat._optionalr�pandas.util._test_decorators�util�_test_decorators�td�pandasr�rrrrrrrrrr�pandas._testing�_testingr��pandas.core.arraysrr�pandas.util.versionr�	pandas.ior�
pandas.io.sqlrr r!r"r#r$r%r?r��filterwarnings�
pytestmark�fixturer0rCr^r`rqr}r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr"r&r)r+r1r3r6r8r>rGrMrOrQrUrWrYr[r]r_rarcrerhrjrmrsrurw�paramr�mysql_connectable�mysql_connectable_iris�mysql_connectable_types�postgresql_connectable�postgresql_connectable_iris�postgresql_connectable_types�sqlite_connectable�sqlite_connectable_iris�sqlite_connectable_types�sqlalchemy_connectable�sqlalchemy_connectable_iris�sqlalchemy_connectable_types�adbc_connectable�adbc_connectable_iris�adbc_connectable_types�all_connectable�all_connectable_iris�all_connectable_types�parametrizer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr&r.r3r=rBrHrJrLrSrUrWrYr]r_rbrhrkrprxr�r�r�r�r�r�r�r�r�r�r�r�rlrSr�r�r�r�r�r�r�r	r
rrrrr r$r)r3rAr�rDrHrK�skip_if_installedrOrUrZr^rarcrvryr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
rrrr/r9rGrT�infr[rsrwrzrr�r�r�r�r�r�r�r�r��
no_defaultr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrrr)r/r1r9r=r?rErPr[r-r.r/�<module>r�s���"���
������ ���
���?�)�)�������(��������[�[�
'�
'�C��
�
������8�2�D�>
� "�&�>�<�2�(*7�Z-�;�8������
������6���
,��
,� ��� ,�� ,�F���,��,�2�23�0.��.�
V�.�&"��"�
V�"�.���
��
� ������������
������
������
������
���������%��%����%��%�
������
������������$���
��
� ������
������
���"��"�������������
������������������
������������
������
������������"������*�������������������F�L�L�'�v�{�{�~�~�>��F�L�L�%�V�[�[�^�^�<����F�L�L�,�F�K�K�N�N�C��F�L�L�*�&�+�+�.�.�A����F�L�L�-�V�[�[�^�^�D��F�L�L�+�6�;�;�>�>�B����F�L�L�-�V�[�[�^�^�D��F�L�L�+�6�;�;�>�>�B����F�L�L�2�&�+�+�.�.�I��F�L�L�0������G����F�L�L�3�6�;�;�>�>�J��F�L�L�1������H� ��
������+�-C�C�FX�X���8�8�;R�R��
�:�:�=U�U��
��F�L�L�'�v�{�{�~�~�>����F�L�L�'�v�{�{�~�~�>��F�L�L�#�6�;�;�>�>�:����F�L�L�(������?��F�L�L�$�F�K�K�N�N�;���)�,<�+=�=�@P�P�� �#8�"9�9�<Q�Q��
!�$:�#;�;�>T�T��
�������1�O�2�O��������1�L�2�L��������1�Q�2�Q�B�������1�M�2�M��������1�������D�'�?�3�>�4�2�>��������1������-��
�/N�O�M�P�2�M��������1�J�2�J�������!5�6�.�7�.�������!5�6�.�7�.�$������!<�=��>��6������!5�6�!�7�!�&������!<�=�!�>�!�������!<�=�	!�>�	!�������!7�8�>�9�>�"������!6�7�F�8�F�>������!2�3�!$�4�!$�H������!7�8������)�A�z�?�;�",�<�9�",�J������!7�8�65�9�65�r�������1�-�2�-�.������!2�3�15�4�15�h������!7�8� ,�9� ,�F,�2B�<�=�������!5�6�!�7�!�$������!5�6�!�7�!�&������!5�6�!�7�!�$������!5�6�!�7�!�������!5�6�	=�7�	=��������1�.�2�.��������1�G�2�G��������1�#�2�#�"�������1�#�2�#�$�������1�	/�2�	/��������1�	,�2�	,��������1�/�2�/�(�������1�/�2�/�*������!5�6�<�7�<�������!6�7�4�8�4�n������!6�7�������"?�@�������	���,�.H�I�	���w��/����!�&�	
�


�	�	�W�|�5�	��%,��A�8�%,�P������!6�7�?�8�?��������1�+4�2�+4�\�������1�
;�2�
;��������1������%�
��"(�#�2�$(�$�������1�F
�2�F
�R�������1�=�2�=�&�������1���������
����	��,��2�,�,�������1�N�2�N��������1�
"�2�
"��������1�.�2�.��������1�#�2�#�.�������1�-�2�-�8�������1�-*�2�-*�`�������1�#�2�#�@�������1�:�2�:��������1�#�2�#�(�������1�,�2�,�:�������1�+�2�+��������1�1�2�1�,������!5�6�4�7�4�$>�2�������1�;�2�;�.������!7�8�A�9�A�������!7�8���������������������	�(�"�(�(�3�-�,�,��7�h�Y�G���(�)�9�*�������!7�8�������X�x�$8�9�4�:�9�4��������1�4�2�4�(����h���������1�4�2� �4�������!<�=�,�>�,�������!<�=�(�>�(��������1�#�2�#�/�����l�#�1�$�1�����l�#�
+�$�
+� #�"�1�$������!7�8�+�9�+�(������!7�8�0�9�0�2�������1�/�2�/�*������!5�6�<�7�<�������!<�=�!�>�!�������!<�=�X�>�X�������!<�=�:�>�:�������!=�>�=�?�=�,������!7�8�&�9�&�������!=�>�<�?�<�������!7�8���������/@�(A�B�
*�C�9�
*�������!7�8�	*�9�	*�������!7�8�7�9�7�������!7�8�,�9�,�<������!7�8�,�9�,�������!7�8�	?�9�	?�������!=�>�?�?�?�>������!7�8�*�9�*�0������!7�8�*�9�*�.������!7�8�	-�9�	-�������!7�8�#�9�#�4������!7�8�H�9�H�������!7�8�&�9�&�������!7�8�&�9�&�"������!7�8�&�9�&�$�������1�$�2�$�N�������1� �2� ��������1�&�2�&�R������!7�8�N�9�N�:������!7�8�&&�9�&&�R������!7�8�!5�9�!5�H������!7�8�08�9�08�f������!7�8� �9� �F������!7�8��������b�f�f�X���"�&�&��	�*�b�f�f�W�I���,P�Q��!�	�9�
!�6������!7�8�"(�9�"(�J�������1�N�2�N��������1�#�2�#�������!7�8�'�9�'��������1�'�2�'�
F�	��������1�������*�.>�!?�@�&4�A�2�&4�R�������1�������*�.>�!?�@�+4�A�2�+4�\�������1�������!Q�R�>�S�2�>����������4��4�n�������1�0�2�0�*�������1�������3�>�>�;K�*L�M�������*�.>�!?�@�,�A�N�2�,�2>�7�G�$7�N,�&2�������=������GD��GD�T����� '�� '�F:�/�������e�T�]�3�)�4�)�$B�N�,@�&&�@'�..�,�64�.-�*�(K�*/�,U�

+� O+r.

Youez - 2016 - github.com/yon3zu
LinuXploit