
x\c           @  s  d  Z  d d l m Z d d l Z d d l m Z m Z m Z d d l Z d d l Z d d l	 Z
 d d l Z d d l j Z d d l m Z m Z m Z m Z d d l m Z m Z d d l Z d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m  Z  d d l! j" j# Z$ d d l% j& j' Z' d d l% m( Z( m) Z) yT d d l* Z* d d l+ Z* d d l, j' j- Z- d d	 l. m/ Z/ d d
 l0 m1 Z2 e3 Z4 Wn e5 k
 re6 Z4 n Xi i d d 6d d 6d d 6d 6i d d 6d d 6d d 6d 6i d d 6d d 6d d 6d 6i i d d 6d d d d d  d! d" d# d$ f	 d% 6d 6i d& d 6d d d d d  d! d" d# d$ f	 d% 6d 6i d' d 6d d d( d d d  d! d" d# d$ f
 d% 6d 6d) 6i d* d 6d+ d 6d, d 6d- 6i d. d 6d/ d 6d0 d 6d1 6i d2 d 6d3 6Z7 d4 e8 f d5     YZ9 d6 e9 f d7     YZ: d8 e9 f d9     YZ; d: e9 f d;     YZ< d< e8 f d=     YZ= d> e= f d?     YZ> e j? j@ d@ e< e> f dA     Y ZA dB e8 f dC     YZB e j? j@ dD eB eA f dE     Y ZC e j? j@ dF e; e> f dG     Y ZD dH e< e= f dI     YZE dJ eB eE f dK     YZF dL e8 f dM     YZG dN e8 f dO     YZH dP e8 f dQ     YZI e j? j@ e j? jJ dR eH eE f dS     Y  ZK e j? j@ e j? jJ dT eH eF f dU     Y  ZL e j? j@ e j? jJ dV eI eE f dW     Y  ZM e j? j@ e j? jJ dX eI eF f dY     Y  ZN e j? j@ dZ eG eE f d[     Y ZO e j? j@ d\ eG eF f d]     Y ZP e j? j@ d^ e; e= f d_     Y ZQ d`   ZR i
 da   e 6db   eS 6dc   e
 jT 6dd   e jU 6de   e jV 6df   eW 6dg   eX 6dh   eY eZ  6di   e
 j[ 6dj   e\ 6Z] dk   Z^ eZ eZ dl  Z_ e j? j@ dm e; f dn     Y Z` e j? j@ e j? jJ e j? ja do dp  dq e: f dr     Y   Zb d S(s   s  SQL io tests

The SQL tests are broken down in different classes:

- `PandasSQLTest`: base class with common methods for all test classes
- Tests for the public API (only tests with sqlite3)
    - `_TestSQLApi` base class
    - `TestSQLApi`: test the public API with sqlalchemy engine
    - `TestSQLiteFallbackApi`: test the public API with a sqlite DBAPI
      connection
- Tests for the different SQL flavors (flavor specific type conversions)
    - Tests for the sqlalchemy mode: `_TestSQLAlchemy` is the base class with
      common methods, `_TestSQLAlchemyConn` tests the API with a SQLAlchemy
      Connection object. The different tested flavors (sqlite3, MySQL,
      PostgreSQL) derive from the base class
    - Tests for the fallback mode (`TestSQLiteFallback`)

i(   t   print_functionN(   t   datet   datetimet   time(   t   PY36t   lranget   ranget   string_types(   t   is_datetime64_dtypet   is_datetime64tz_dtype(
   t	   DataFramet   Indext
   MultiIndext   Seriest	   Timestampt   concatt
   date_ranget   isnat   to_datetimet   to_timedelta(   t   read_sql_queryt   read_sql_table(   t   declarative(   t   sessions   CREATE TABLE iris (
                "SepalLength" REAL,
                "SepalWidth" REAL,
                "PetalLength" REAL,
                "PetalWidth" REAL,
                "Name" TEXT
            )t   sqlites   CREATE TABLE iris (
                `SepalLength` DOUBLE,
                `SepalWidth` DOUBLE,
                `PetalLength` DOUBLE,
                `PetalWidth` DOUBLE,
                `Name` VARCHAR(200)
            )t   mysqls  CREATE TABLE iris (
                "SepalLength" DOUBLE PRECISION,
                "SepalWidth" DOUBLE PRECISION,
                "PetalLength" DOUBLE PRECISION,
                "PetalWidth" DOUBLE PRECISION,
                "Name" VARCHAR(200)
            )t
   postgresqlt   create_iriss&   INSERT INTO iris VALUES(?, ?, ?, ?, ?)s.   INSERT INTO iris VALUES(%s, %s, %s, %s, "%s");s,   INSERT INTO iris VALUES(%s, %s, %s, %s, %s);t   insert_iriss  CREATE TABLE types_test_data (
                    "TextCol" TEXT,
                    "DateCol" TEXT,
                    "IntDateCol" INTEGER,
                    "IntDateOnlyCol" INTEGER,
                    "FloatCol" REAL,
                    "IntCol" INTEGER,
                    "BoolCol" INTEGER,
                    "IntColWithNull" INTEGER,
                    "BoolColWithNull" INTEGER
                )s  CREATE TABLE types_test_data (
                    `TextCol` TEXT,
                    `DateCol` DATETIME,
                    `IntDateCol` INTEGER,
                    `IntDateOnlyCol` INTEGER,
                    `FloatCol` DOUBLE,
                    `IntCol` INTEGER,
                    `BoolCol` BOOLEAN,
                    `IntColWithNull` INTEGER,
                    `BoolColWithNull` BOOLEAN
                )s  CREATE TABLE types_test_data (
                    "TextCol" TEXT,
                    "DateCol" TIMESTAMP,
                    "DateColWithTz" TIMESTAMP WITH TIME ZONE,
                    "IntDateCol" INTEGER,
                    "IntDateOnlyCol" INTEGER,
                    "FloatCol" DOUBLE PRECISION,
                    "IntCol" INTEGER,
                    "BoolCol" BOOLEAN,
                    "IntColWithNull" INTEGER,
                    "BoolColWithNull" BOOLEAN
                )t   create_test_typesso   
                INSERT INTO types_test_data
                VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
                t   queryt   TextColt   DateColt
   IntDateColt   IntDateOnlyColt   FloatColt   IntColt   BoolColt   IntColWithNullt   BoolColWithNullt   fieldssz   
                INSERT INTO types_test_data
                VALUES("%s", %s, %s, %s, %s, %s, %s, %s, %s)
                s|   
                INSERT INTO types_test_data
                VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
                t   DateColWithTzt   insert_test_typess1   SELECT * FROM iris WHERE Name=? AND SepalLength=?s9   SELECT * FROM iris WHERE `Name`="%s" AND `SepalLength`=%ss7   SELECT * FROM iris WHERE "Name"=%s AND "SepalLength"=%st   read_parameterss]   
                SELECT * FROM iris WHERE Name=:name AND SepalLength=:length
                sy   
                SELECT * FROM iris WHERE
                `Name`="%(name)s" AND `SepalLength`=%(length)s
                sw   
                SELECT * FROM iris WHERE
                "Name"=%(name)s AND "SepalLength"=%(length)s
                t   read_named_parameterss]   
                CREATE VIEW iris_view AS
                SELECT * FROM iris
                t   create_viewt	   MixInBasec           B  s   e  Z d    Z RS(   c         C  sD   t  |  d  r@ x! |  j   D] } |  j |  q W|  j   n  d  S(   Nt   conn(   t   hasattrt   _get_all_tablest
   drop_tablet   _close_conn(   t   selft   methodt   tbl(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   teardown_method   s    (   t   __name__t
   __module__R7   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR.      s   t
   MySQLMixInc           B  s#   e  Z d    Z d   Z d   Z RS(   c         C  s:   |  j  j   } | j d t j |   |  j  j   d  S(   Ns   DROP TABLE IF EXISTS %s(   R/   t   cursort   executet   sqlt   _get_valid_mysql_namet   commit(   R4   t
   table_namet   cur(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR2      s    	c         C  s=   |  j  j   } | j d  g  | j   D] } | d ^ q) S(   Ns   SHOW TABLESi    (   R/   R;   R<   t   fetchall(   R4   RA   t   table(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR1      s    c         C  s9   d d l  m } y |  j j   Wn | k
 r4 n Xd  S(   Ni(   t   Error(   t   pymysql.errRD   R/   t   close(   R4   RD   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR3      s
    (   R8   R9   R2   R1   R3   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR:      s   		t   SQLiteMixInc           B  s#   e  Z d    Z d   Z d   Z RS(   c         C  s.   |  j  j d t j |   |  j  j   d  S(   Ns   DROP TABLE IF EXISTS %s(   R/   R<   R=   t   _get_valid_sqlite_nameR?   (   R4   R@   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR2      s    c         C  s3   |  j  j d  } g  | j   D] } | d ^ q S(   Ns1   SELECT name FROM sqlite_master WHERE type='table'i    (   R/   R<   RB   (   R4   t   cRC   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR1      s    		c         C  s   |  j  j   d  S(   N(   R/   RF   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR3      s    (   R8   R9   R2   R1   R3   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRG      s   		t   SQLAlchemyMixInc           B  s#   e  Z d    Z d   Z d   Z RS(   c         C  s   t  j |  j  j |  d  S(   N(   R=   t   SQLDatabaseR/   R2   (   R4   R@   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR2      s    c         C  s5   t  j j d |  j  } | j   | j j   } | S(   Nt   bind(   t
   sqlalchemyt   schemat   MetaDataR/   t   reflectt   tablest   keys(   R4   t   metat
   table_list(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR1      s    
c         C  s   d  S(   N(    (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR3      s    (   R8   R9   R2   R1   R3   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRJ      s   		t   PandasSQLTestc           B  s   e  Z d  Z d   Z e j d d g  d    Z d   Z d   Z d	   Z	 d
   Z
 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 d   Z RS(   sT   
    Base class with common private methods for SQLAlchemy and fallback cases.

    c         C  s*   t  |  j d  r |  j S|  j j   Sd  S(   NR<   (   R0   R/   R;   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt	   _get_exec   s    t   paramst   iot   datas   iris.csvc   	      C  s   d d  l  } | | j   } t |  d  s7 |  j   n  |  j d  |  j   j t d |  j  | j	 | d d d d  X } t j |  } t |  t d |  j } x$ | D] } |  j   j | |  q WWd  QXd  S(	   NiR/   t   irisR   t   modet   rt   newlineR   (   RX   t   paramR0   t   setup_connectR2   RV   R<   t   SQL_STRINGSt   flavort   opent   Nonet   csvt   readert   next(	   R4   t   datapatht   requestRX   t   iris_csv_filet   iris_csvR\   t   inst   row(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   load_iris_data   s    
c         C  s/   |  j  d  |  j   j t d |  j  d  S(   Nt	   iris_viewR-   (   R2   RV   R<   R`   Ra   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _load_iris_view  s    c         C  s[   | j  d j } | j d } t | t j  s5 t  t j | j	 d d d d d g  d  S(   Ni    gffffff@g      @gffffff?g?s   Iris-setosa(
   t   dtypest   typet   iloct
   issubclasst   npt   floatingt   AssertionErrort   tmt   equalContentst   values(   R4   t
   iris_framet   pytypeRl   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _check_iris_loaded_frame  s    c         C  s@   d d d d d g } d d d d g } t  | d | |  _ d  S(   Nt   indext   At   Bt   Ct   Ds   2000-01-03 00:00:00gN\^?g9\x`|@g% TO׿g(nIs   2000-01-04 00:00:00g}C?gc^Vg~q"BĿg4?s   2000-01-05 00:00:00gGͿ?g2r¹e?g>ݦ4gёR?s   2000-01-06 00:00:00g?{mX?g$?gnk3Am?g
S?t   columns(   s   2000-01-03 00:00:00gN\^?g9\x`|@g% TO׿g(nI(   s   2000-01-04 00:00:00g}C?gc^Vg~q"BĿg4?(   s   2000-01-05 00:00:00gGͿ?g2r¹e?g>ݦ4gёR?(   s   2000-01-06 00:00:00g?{mX?g$?gnk3Am?g
S?(   R
   t   test_frame1(   R4   R   RY   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _load_test1_data  s        	c         C  s   t  t d d d d d g d d d d	 d
 g d d d d d g d t t t t g d d d d d g   } t | d  | d <| |  _ d  S(   NR~   i   i   i   i   R   t   asdt   gsqt   yltt   jklR   g?g@g@g333333@R   t   Es
   1990-11-22s
   1991-10-26s
   1993-11-26s
   1995-12-12(   R
   t   dictt   Falset   TrueR   t   test_frame2(   R4   t   df(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _load_test2_data,  s    c         C  sC   d d d g } d d d f d d d g } t  | d | |  _ d  S(   NR}   R~   R   s   2000-01-03 00:00:00i   i   i   gZs   2000-01-04 00:00:00igc^Vs   2000-01-05 00:00:00i N  g2r¹e?s   2000-01-06 00:00:00i͏g$?R   I       i(   s   2000-01-04 00:00:00igc^V(   s   2000-01-05 00:00:00i N  g2r¹e?(   s   2000-01-06 00:00:00i͏g$?(   R
   t   test_frame3(   R4   R   RY   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _load_test3_data7  s    	c         C  s  |  j  d  |  j   j t d |  j  t d |  j } i
 d d 6d d 6d d	 6d
 d 6d d 6d d 6d d 6t d 6d d 6t d 6i
 d d 6d d 6d d	 6d d 6d d 6d d 6d d 6t d 6d  d 6d  d 6g } xC | D]; } |  j   j | d g  | d D] } | | ^ q  q Wd  S(   Nt   types_test_dataR   R*   t   firstR   s   2000-01-03 00:00:00R    s   2000-01-01 00:00:00-08:00R)   i wR!   i2R"   g333333$@R#   i   R$   R%   R&   R'   s   2000-01-04 00:00:00s   2000-06-01 00:00:00-07:00i 'Pi\2R   R(   (   R2   RV   R<   R`   Ra   R   Rc   (   R4   Rk   RY   t   dt   field(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _load_raw_sqlA  s:    c         C  s'   |  j    j d |  j   } | d S(   Ns"   SELECT count(*) AS count_1 FROM %si    (   RV   R<   t   fetchone(   R4   R@   t   result(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _count_rowsf  s    c         C  s#   |  j  j d  } |  j |  d  S(   Ns   SELECT * FROM iris(   t	   pandasSQLt
   read_queryR|   (   R4   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _read_sql_irisk  s    c         C  sF   t  d |  j } d d g } |  j j | d | } |  j |  d  S(   NR+   s   Iris-setosagffffff@RW   (   R`   Ra   R   R   R|   (   R4   R   RW   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _read_sql_iris_parametero  s    c         C  sN   t  d |  j } i d d 6d d 6} |  j j | d | } |  j |  d  S(   NR,   s   Iris-setosat   namegffffff@t   lengthRW   (   R`   Ra   R   R   R|   (   R4   R   RW   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _read_sql_iris_named_parameteru  s    c         C  s   |  j  d  |  j j |  j d d | |  j j d  sA t  t |  j  } |  j d  } | | k sq t  |  j  d  d  S(   NR   R5   (   R2   R   t   to_sqlR   t	   has_tableRv   t   lenR   (   R4   R5   t   num_entriest   num_rows(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql{  s    c         C  s.   |  j  d  |  j j |  j j d  d  d  S(   NR   i    (   R2   R   R   R   Rr   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql_empty  s    c         C  sw   |  j  d  |  j j |  j d d d |  j j d  sA t  t j t |  j j |  j d d d |  j  d  d  S(   NR   t	   if_existst   fail(	   R2   R   R   R   R   Rv   t   pytestt   raisest
   ValueError(   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql_fail  s    	c         C  s   |  j  d  |  j j |  j d d d |  j j |  j d d d |  j j d  s] t  t |  j  } |  j d  } | | k s t  |  j  d  d  S(   NR   R   R   t   replace(   R2   R   R   R   R   Rv   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql_replace  s    		c         C  s   |  j  d  |  j j |  j d d d |  j j |  j d d d |  j j d  s] t  d t |  j  } |  j d  } | | k s t  |  j  d  d  S(   NR   R   R   t   appendi   (   R2   R   R   R   R   Rv   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql_append  s    		c           s   g      f d   } |  j  d  |  j j |  j d d | |  j j d  sV t    d g k sk t  t |  j  } |  j d  } | | k s t  |  j  d  d  S(   Nc           sR     j  d  g  | D] } t t | |   ^ q } | j |  j j   |  d  S(   Ni   (   R   R   t   zipR<   RC   t   insert(   t   pd_tableR/   RR   t	   data_iterRl   RY   (   t   check(    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   sample  s    (R   R5   i   (   R2   R   R   R   R   Rv   R   R   (   R4   R   R   R   (    (   R   s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql_method_callable  s    c         C  sk   |  j  d  |  j j |  j d  |  j j d  } | j d d t d  | j _	 t
 j | |  j  d  S(   Nt   test_frame_roundtrips"   SELECT * FROM test_frame_roundtript   level_0t   inplace(   R2   R   R   R   R   t	   set_indexR   Rc   R}   R   Rw   t   assert_frame_equal(   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt
   _roundtrip  s    		c         C  sA   |  j  j d  } | j   } t j | d d d d d g  d  S(   Ns   SELECT * FROM irisgffffff@g      @gffffff?g?s   Iris-setosa(   R   R<   R   Rw   Rx   (   R4   t   iris_resultsRl   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _execute_sql  s    c         C  sk   t  j d d g d d d	 d
 g d d g } |  j j | d  |  j d  } | d g g k sg t  d  S(   Ni   g @t   line1i   g      ?t   line2R   R~   R   R   R}   t   test_to_sql_saves_index(   i   g @R   (   i   g      ?R   (   R
   t   from_recordsR   R   t   _get_index_columnsRv   (   R4   R   t   ix_cols(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _to_sql_save_index  s
    c         C  s   |  j  j d  d } y5 |  j  j     } | j |  t d   Wd  QXWn t k
 r^ n X|  j  j d  } t |  d k s t  |  j  j    } | j |  Wd  QX|  j  j d  } t |  d k s t  d  S(   Ns'   CREATE TABLE test_trans (A INT, B TEXT)s/   INSERT INTO test_trans (A,B) VALUES (1, 'blah')t   errors   SELECT * FROM test_transi    i   (   R   R<   t   run_transactiont	   ExceptionR   R   Rv   (   R4   t   ins_sqlt   transt   rest   res2(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _transaction_test  s    (   RX   RY   s   iris.csvN(   R8   R9   t   __doc__RV   R   t   fixtureRm   Ro   R|   R   R   R   R   R   R   R   R   Rc   R   R   R   R   R   R   R   R   R   R   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRU      s.   						
	%												t   _TestSQLApic           B  sL  e  Z d  Z d Z d" Z d   Z e j d e	  d    Z
 d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z e j j d  d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d    Z' d!   Z( RS(#   s  
    Base class to test the public API.

    From this two classes are derived to run these tests for both the
    sqlalchemy mode (`TestSQLApi`) and the fallback mode
    (`TestSQLiteFallbackApi`).  These tests are run with sqlite3. Specific
    tests for the different sql flavours are included in `_TestSQLAlchemy`.

    Notes:
    flavor can always be passed even in SQLAlchemy mode,
    should be correctly ignored.

    we don't use drop_table because that isn't part of the public api

    R   c         C  s   |  j    |  _ d  S(   N(   t   connectR/   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR_     s    t   autousec         C  s   |  j    d  S(   N(   t   load_test_data_and_sql(   R4   Rm   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   setup_method  s    c         C  s6   |  j    |  j   |  j   |  j   |  j   d  S(   N(   Ro   R   R   R   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s
    



c         C  s&   t  j d |  j  } |  j |  d  S(   Ns   SELECT * FROM iris(   R=   R   R/   R|   (   R4   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_sql_iris#  s    c         C  s&   t  j d |  j  } |  j |  d  S(   Ns   SELECT * FROM iris_view(   R=   R   R/   R|   (   R4   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_sql_view(  s    c         C  s8   t  j |  j d |  j  t  j d |  j  s4 t  d  S(   NR   (   R=   R   R   R/   R   Rv   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql-  s    c         C  sf   t  j |  j d |  j d d t  j d |  j  s: t  t j t t  j |  j d |  j d d d  S(   NR   R   R   (	   R=   R   R   R/   R   Rv   R   R   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_fail1  s
    c         C  s   t  j |  j d |  j d d t  j |  j d |  j d d t  j d |  j  sY t  t |  j  } |  j d  } | | k s t  d  S(   NR   R   R   R   (   R=   R   R   R/   R   Rv   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_replace9  s    c         C  s   t  j |  j d |  j d d t  j |  j d |  j d d t  j d |  j  sY t  d t |  j  } |  j d  } | | k s t  d  S(   Nt   test_frame4R   R   R   i   (   R=   R   R   R/   R   Rv   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_appendF  s    c         C  sK   t  j |  j d |  j d t t  j d |  j  } t j |  j |  d  S(   Nt   test_frame5R}   s   SELECT * FROM test_frame5(   R=   R   R   R/   R   t   read_sqlRw   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_type_mappingT  s    c         C  sl   t  t j d d d d d } t j | d |  j d t t j d |  j  } t j	 | j
   |  d  S(	   Ni   t   dtypet   int64R   t   seriest   test_seriesR}   s   SELECT * FROM test_series(   R   Rt   t   arangeR=   R   R/   R   R   Rw   R   t   to_frame(   R4   t   st   s2(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_seriesZ  s    !s   ignore:\nPanel:FutureWarningc         C  s/   t  j   } t j t t j | d |  j  d  S(   Nt
   test_panel(   Rw   t	   makePanelR   R   t   NotImplementedErrorR=   R   R/   (   R4   t   panel(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_panel`  s    c         C  s   t  j |  j d d |  j t  j d d |  j } |  j j | _ | j d d t | j j t	  d  | j _ t j | |  j  d  S(   NR   t   cons"   SELECT * FROM test_frame_roundtripR   R   (   R=   R   R   R/   R   R}   R   R   t   astypet   intRc   R   Rw   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_roundtripf  s    
c      	   C  sW   t  j |  j d d |  j d t d d t  j d d |  j } t j | |  j  d  S(   NR   R   R}   t	   chunksizei   s"   SELECT * FROM test_frame_roundtrip(   R=   R   R   R/   R   R   Rw   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_roundtrip_chunksizet  s    c         C  sG   t  j d d |  j } | j   } t j | d d d d d g  d  S(   Ns   SELECT * FROM irisR   gffffff@g      @gffffff?g?s   Iris-setosa(   R=   R<   R/   R   Rw   Rx   (   R4   R   Rl   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_execute_sql|  s    c      	   C  s  t  j d |  j  } t | j j j t j  s7 t	  t  j d |  j d d g } t | j j j t j  sv t	  | j j
   t j d d d d d d  t j d d d d d d  g k s t	  t  j d |  j d i d	 d 6} t | j j j t j  s
t	  | j j
   t j d d d d d d  t j d d d d d d  g k s[t	  t  j d |  j d d
 g } t | j j j t j  st	  | j j
   t j d d d d d d  t j d d d d d d  g k st	  t  j d |  j d i d d
 6} t | j j j t j  s.t	  | j j
   t j d d d d d d  t j d d d d d d  g k st	  t  j d |  j d i d d 6} t | j j j t j  st	  | j j
   t j d  t j d  g k st	  d  S(   Ns   SELECT * FROM types_test_datat   parse_datesR    i  i   i   i    i   s   %Y-%m-%d %H:%M:%SR!   i  i   i   i  R   s   %Y%m%dR"   s
   2010-10-10s
   2010-12-12(   R=   R   R/   Rs   R    R   Rq   Rt   t
   datetime64Rv   t   tolistt   pdR   R!   R"   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_date_parsing  s@    "!*!*!*!*!c         C  sm   t  j d |  j d d d d d g } t | j j j t j  sH t	  t | j
 j j t j  si t	  d  S(   Ns   SELECT * FROM types_test_datat	   index_colR    R   R!   (   R=   R   R/   Rs   R}   R   Rq   Rt   R   Rv   R!   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_date_and_index  s
    !c         C  s   t  t d d g d d  j   } t j t   | j d |  j  Wd  QXt j	 d |  j  } t j
 | d | d j d   d  S(   Ns   00:00:01s   00:00:03R   t   foot   test_timedeltas   SELECT * FROM test_timedeltaR   (   R   R   R   Rw   t   assert_produces_warningt   UserWarningR   R/   R=   R   t   assert_series_equalR   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    !c         C  s9   t  i d d g d 6 } t j t | j d |  j  d  S(   Ni   y              ?y               @t   at   test_complexy      ?      ?(   R
   R   R   R   R   R/   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s	  t  i t d  d 6 } t j | d |  j  t j d |  j  } | j d d k s] t  t j | d |  j d d d	 d
 t j d |  j  } | j d d
 k s t  d | j _	 t j | d |  j d d t j d |  j  } | j d d k st  t j | d |  j d d d	 d
 t j d |  j  } | j d d
 k sSt  d | j _	 t j | d |  j d d t j d |  j  } | j d d k st  d  | j _	 t j | d |  j d d d	 d t j d |  j  } | j d d k st  d  S(   Ni   t   col1t   test_index_labels   SELECT * FROM test_index_labeli    R}   R   R   t   index_labelt   other_labelt
   index_namet   0(   R
   R   R=   R   R/   R   R   Rv   R}   R   Rc   (   R4   t
   temp_framet   frame(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_index_label  s6    c      
   C  s  t  i t d  d 6d t j d d g  } t j | d |  j  t j d	 |  j  } | j d
 d k sr t	  | j d d k s t	  t j | d |  j d d d d d g t j d	 |  j  } | j d  j
   d d g k s t	  d d g | j _ t j | d |  j d d t j d	 |  j  } | j d  j
   d d g k sUt	  t j | d |  j d d d d d g t j d	 |  j  } | j d  j
   d d g k st	  t j t t j | d |  j d d d d d  S(   Ni   R  R}   t   A0t   A1t   B0t   B1R  s   SELECT * FROM test_index_labeli    R   i   t   level_1R   R   R  R~   R   i   R   R   (   R  R  (   R  R  (   R
   R   R   t   from_productR=   R   R/   R   R   Rv   R   R}   t   namesR   R   R   (   R4   R
  R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt"   test_to_sql_index_label_multiindex  s.    %%%c         C  s~   t  j d d g d d d	 d
 g d d d	 g } | j d |  j  t j d |  j d d d	 g } t j | | d t d  S(   Ni   g @R   i   g      ?R   R   R~   R   R   R}   t   test_multiindex_roundtrips'   SELECT * FROM test_multiindex_roundtripR   t   check_index_type(   i   g @R   (   i   g      ?R   (	   R
   R   R   R/   R=   R   Rw   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    	c         C  sJ   t  d d g d d g g d d d g } t j | d |  j d d	 d  S(
   Ni   i   i   i   R   i    t   test_frame_integer_col_namesR   R   (   R
   R=   R   R/   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_integer_col_names  s    *c         C  s4   t  j |  j d d |  j } d | k s0 t  d  S(   Nt   testR   t   CREATE(   R=   t
   get_schemaR   R/   Rv   (   R4   t
   create_sql(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_get_schema"  s    c      	   C  s   t  i d d g d 6d d g d 6 } |  j d k r> t j n d } t j | d	 d
 |  j d i | d 6} d | k s~ t  d | k s t  d  S(   Ng?g333333?R  g @g@t   bRM   t   INTEGERR  R   R   R  (   R
   R[   RM   t   IntegerR=   R  R/   Rv   (   R4   t   float_frameR   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_get_schema_dtypes&  s    &c         C  s   t  i d d g d 6d d g d 6 } t j | d d |  j d	 d } d
 } | | k s_ t  t j |  j d d |  j d	 d d g } d } | | k s t  d  S(   Ng?g333333?t   Col1g @g@t   Col2R  R   RR   s'   CONSTRAINT test_pk PRIMARY KEY ("Col1")R~   R   s)   CONSTRAINT test_pk PRIMARY KEY ("A", "B")(   R
   R=   R  R/   Rv   R   (   R4   R  R  t   constraint_sentence(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_get_schema_keys.  s    &!c         C  s  t  t j j d d  d t d  } | j d |  j d t t j	 d |  j  } t    } d } d d d d d	 g } xa t j	 d |  j d
 d D]D } t
 | | g d t } t |  | | k s t  | d 7} q Wt j | |  |  j d k rt    } d } d d d d d	 g } xa t j d |  j d
 d D]D } t
 | | g d t } t |  | | k svt  | d 7} q<Wt j | |  n  d  S(   Ni   i   R   t   abcdet   test_chunksizeR}   s   select * from test_chunksizei    i   R   t   ignore_indexi   RM   (   R
   Rt   t   randomt   randnt   listR   R/   R   R=   R   R   R   R   Rv   Rw   R   R[   R   (   R4   R   t   res1R   t   it   sizest   chunkt   res3(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_chunksize_read:  s,    '		c         C  s   t  i d d d g d 6d d d g d 6 } | j   } | d j d  | d <| j d	 |  j d
 t t j d |  j  } t j	 | |  d  S(   Ni   i   i   t	   person_ids   John P. Does	   Jane Dovet   person_namet   categoryt   test_categoricalR}   s   SELECT * FROM test_categorical(
   R
   t   copyR   R   R/   R   R=   R   Rw   R   (   R4   R   t   df2R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR6  \  s    c         C  sG   t  d d g d d g g d d d g } | j d |  j d	 t d  S(
   Ni   i   i   i   R   u   éu   bt   test_unicodeR}   (   R
   R   R/   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_unicode_column_namej  s    *c         C  sq   t  i d d d g d 6d t j d g d 6 } | j d |  j d	 t t j d
 |  j  } t j	 | |  d  S(   Ni    i   i   R~   g?gffffff@R   s   d1187b08-4943-4c8d-a7f6R}   s'   SELECT * FROM `d1187b08-4943-4c8d-a7f6`(
   R
   Rt   t   nanR   R/   R   R=   R   Rw   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_escaped_table_nameo  s
    /	N()   R8   R9   R   Ra   Rc   R[   R_   R   R   R   R   R   R   R   R   R   R   R   R   R   t   markt   filterwarningsR   R   R   R   R   R   R   R  R  R  R  R  R  R"  R&  R2  R6  R:  R<  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     sB   														.	
	
		(	#							"		t
   TestSQLApic           B  s   e  Z d  Z d Z d Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z RS(   s   
    Test the public API as it would be used directly

    Tests for `read_sql_table` are included here, as this is specific for the
    sqlalchemy mode.

    R   RM   c         C  s$   t  r t j d  St j d  d  S(   Ns   sqlite:///:memory:s   SQLAlchemy not installed(   t   SQLALCHEMY_INSTALLEDRM   t   create_engineR   t   skip(   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s_   t  j |  j d |  j  d d g } t  j d |  j d | } | j j   | k s[ t  d  S(   Nt
   test_frameR~   R   R   (   R=   R   R   R/   R   R   R   Rv   (   R4   t   colsR   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_table_columns  s    c         C  s   t  j |  j d |  j  t  j d |  j d d } | j j d g k sO t  t  j d |  j d d d g } | j j d d g k s t  t  j d |  j d d d g d d d g } | j j d d g k s t  | j j	   d d g k s t  d  S(	   NRC  R   R}   R~   R   R   R   R   (
   R=   R   R   R/   R   R}   R  Rv   R   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_table_index_col  s    c         C  sx   t  j d |  j  } t  j d |  j  } t j | |  t  j d |  j  } t  j d |  j  } t j | |  d  S(   Ns   SELECT * FROM irisRZ   (   R=   R   R/   R   Rw   R   R   (   R4   t   iris_frame1t   iris_frame2(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_sql_delegate  s    c         C  s   d } |  j  j |  d } |  j  j |  t j d t  R } t j d  t j d |  j   t j d |  j   t	 |  d k s t
  Wd  QXd  S(   Ns,   CREATE TABLE invalid (x INTEGER, y UNKNOWN);s0   CREATE TABLE other_table (x INTEGER, y INTEGER);t   recordt   alwayst   other_tables   SELECT * FROM other_tablei    (   R/   R<   t   warningst   catch_warningsR   t   simplefilterR=   R   R   R   Rv   (   R4   t   qryt   w(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_not_reflect_all_tables  s    c         C  sZ   t  j d t  B } t  j d  |  j j d |  j  t |  d k sP t  Wd  QXd  S(   NRJ  RK  t   CaseSensitivei    (	   RM  RN  R   RO  R   R   R/   R   Rv   (   R4   RQ  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt(   test_warning_case_insensitive_table_name  s    c         C  sU   d d l  m } | j j |  j  } | j d  } g  | D] } | d ^ q; } | S(   Ni(   t
   reflectiont   test_index_savedt   column_names(   t   sqlalchemy.engineRU  t	   Inspectort   from_engineR/   t   get_indexes(   R4   t   tbl_nameRU  t   inspt   ixsR.  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s
    c         C  sx   t  i t d d g d t d 6 } t j |  j  } t j d | d | } t | j j	 d j
 t j  st t  d  S(   Nt   201412120154t   201412110254t   utcR   t	   test_typeR  (   R
   R   R   R=   RK   R/   t   SQLTablet
   isinstanceRC   RI   Rq   t   sqltypest	   TIMESTAMPRv   (   R4   R   t   dbRC   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_sqlalchemy_type_mapping  s
    c   
      C  s  |  j  } t j   o } d | } d } | j | | d d d t t j | |  } t j | |  } d } t j | |  } Wd  QXt j	 | |  t j	 | |  t j	 | |  y d d  l
 }	 t j d  Wn t k
 r n Xd	 } t j t d
 d  t j d |  Wd  QXd  S(   Ns
   sqlite:///RZ   R   R   R}   s   SELECT * FROM irisis   pg8000 is installeds)   postgresql+pg8000://user:pass@host/dbnamet   matcht   pg8000s   select * from table(   R   Rw   t   ensure_cleanR   R   R=   R   R   R   R   Rj  R   RB  t   ImportErrorR   (
   R4   R   R   t   db_uriRC   R   R   R   R   Rj  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_database_uri_string  s(    	
c      
   C  s   t  } | j   } | j d | | j d | j  | j d | j  | j d | j  | j d | j  | j d | j   } | S(   NRZ   t   SepalLengtht
   SepalWidtht   PetalLengtht
   PetalWidtht   Name(   RM   RO   t   Tablet   Columnt   REALt   TEXT(   R4   t   sat   metadataRZ   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _make_iris_table_metadata  s    c         C  sZ   t  j d  } t j | |  j d i d d 6} t | d  } | d h k sV t  d  S(   Ns#   select * from iris where name=:nameRW   s   Iris-versicolorR   Rs  (   RM   t   textR=   R   R/   t   setRv   (   R4   t	   name_textt   iris_dft	   all_names(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_query_by_text_obj  s
    c         C  s   |  j    } t j | g  j | j j t j d  k  } t j | |  j	 d i d d 6} t
 | d  } | d h k s t  d  S(   NR   RW   s   Iris-setosaRs  (   Rz  RM   t   selectt   whereRI   Rs  t	   bindparamR=   R   R/   R|  Rv   (   R4   RZ   t   name_selectR~  R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_query_by_select_obj  s    (   R8   R9   R   Ra   R[   R   RE  RF  RI  RR  RT  R   Rh  Rn  Rz  R  R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR?  z  s   								
	 		t   _EngineToConnMixinc           B  s)   e  Z d  Z e j d e  d    Z RS(   sS   
    A mixin that causes setup_connect to create a conn rather than an engine.
    R   c         c  s   t  t |   j   |  j } | j   } | j   |  _ t j |  |  _	 | |  _
 | |  _ d  V|  j j   |  j j   |  j
 |  _ t j |  j
  |  _	 d  S(   N(   t   superR  R   R/   R   t   begint   _EngineToConnMixin__txR=   RK   R   t   _EngineToConnMixin__enginet   rollbackRF   (   R4   Rm   t   engineR/   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   %  s    			(   R8   R9   R   R   R   R   R   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s   t   TestSQLApiConnc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  9  s   t   TestSQLiteFallbackApic           B  se   e  Z d  Z d Z d Z d d  Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z d   Z RS(   s9   
    Test the public sqlite connection fallback API

    R   t   fallbacks   :memory:c         C  s   t  j |  S(   N(   t   sqlite3R   (   R4   t   database(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   G  s    c      
   C  s   t  j   g } |  j |  } t j |  j d | d t | j   |  j |  } t j d |  } | j   Wd  QXt  j	 |  j |  d  S(   Nt   test_frame3_legacyR}   s!   SELECT * FROM test_frame3_legacy;(
   Rw   Rk  R   R=   R   R   R   RF   R   R   (   R4   R   R/   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_sql_open_closeJ  s    
		c         C  s9   t  s( d } t j t t j d |  n t j d  d  S(   Ns&   mysql://root@localhost/pandas_nosetests   SELECT * FROM iriss   SQLAlchemy is installed(   R@  R   R   Rl  R=   R   RB  (   R4   R/   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_con_string_import_error\  s
    
c         C  s]   t  j d |  j  } t  j d |  j  } t j | |  t j t  j t  j d |  j  d  S(   Ns   SELECT * FROM irisRZ   (	   R=   R   R/   R   Rw   R   R   R   t   DatabaseError(   R4   RG  RH  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRI  d  s    c      
   C  s]   t  d d g d d g g d d d g } t j   ! t j | d |  j d	 t Wd  QXd  S(
   Ni   i   i   i   R   R  s   b R  R}   (   R
   Rw   R   R=   R   R/   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_safe_names_warningk  s    *c         C  s+   t  j |  j d  } d | k s' t  d  S(   NR  R  (   R=   R  R   Rv   (   R4   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_get_schema2r  s    c         C  s[   xD | j  d  D]3 } | j    d j d  | k r | j    d Sq Wt d |   d  S(   Ns   
i    s   ""i   s   Column %s not found(   t   splitt   stripR   (   R4   RN   t   columnt   col(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   _get_sqlite_column_typew  s    c         C  s}   t  i t d d g d t d 6 } t j |  j  } t j d | d | } | j   } |  j | d  d k sy t	  d  S(   NR_  R`  Ra  R   Rb  R  Rf  (
   R
   R   R   R=   t   SQLiteDatabaseR/   t   SQLiteTablet
   sql_schemaR  Rv   (   R4   R   Rg  RC   RN   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_sqlite_type_mapping~  s    (   R8   R9   R   Ra   R[   R   R  R  RI  R  R  R  R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  >  s   						t   _TestSQLAlchemyc           B  s   e  Z d  Z d4 Z e j d e d d  d    Z d   Z	 e j d e  d    Z
 e d    Z e d    Z e d	    Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d    Z% d!   Z& d"   Z' d#   Z( d$   Z) d%   Z* d&   Z+ d'   Z, d(   Z- d)   Z. d*   Z/ d+   Z0 d,   Z1 d-   Z2 d.   Z3 d/   Z4 d0   Z5 d1   Z6 d2   Z7 d3   Z8 RS(5   s   
    Base class for testing the sqlalchemy backend.

    Subclasses for specific database types are created below. Tests that
    deviate for each flavor are overwritten there.

    R   t   scopet   classc         C  s.   |  j    |  j   |  j   } | j   d  S(   N(   t   setup_importt   setup_driverR   (   t   clsR/   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   setup_class  s    

c         C  s   |  j    |  j   d  S(   N(   R   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    
c         C  s   |  j    d  S(   N(   R   (   R4   Rm   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   t  s t j d  n  d  S(   Ns   SQLAlchemy not installed(   R@  R   RB  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   t     d  S(   N(   R   (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   t     d  S(   N(   R   (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  sl   y5 |  j    |  _ t j |  j  |  _ |  j j    Wn0 t j j k
 rg t j	 d j
 |  j   n Xd  S(   Ns   Can't connect to {0} server(   R   R/   R=   RK   R   RM   t   exct   OperationalErrorR   RB  t   formatRa   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR_     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_sql  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_sql_parameter  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_sql_named_parameter  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_empty  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j  d d  d  S(   NR5   t   multi(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_method_multi  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_method_callable  s    c         C  sv   |  j    } t i d d d d g d 6d d d d g d 6 } t j |  } | j | d  | j d  sr t  d  S(   Ng      ?g       @g      @g      @t   onet   twoR
  (   R   R
   R=   RK   R   R   Rv   (   R4   t	   temp_connR
  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_create_table  s    /c         C  s   |  j    } t i d d d d g d 6d d d d g d 6 } t j |  } | j | d  | j d  sr t  | j d  | j d  s t  d  S(   Ng      ?g       @g      @g      @R  R  R
  (   R   R
   R=   RK   R   R   Rv   R2   (   R4   R  R
  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_drop_table  s    /c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s)   t  j d d |  j } |  j |  d  S(   NRZ   R   (   R=   R   R/   R|   (   R4   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_table  s    c         C  sD   t  j d d |  j d d d g } t j | j j d d g  d  S(   NRZ   R   R   Ro  (   R=   R   R/   Rw   Rx   R   Ry   (   R4   Rz   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRE    s    c         C  s#   t  j t t j d d |  j d  S(   Nt   this_doesnt_existR   (   R   R   R   R=   R   R/   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_table_absent  s    c         C  s   t  j d |  j  } t | j j j t j  s6 t	  t | j
 j j t j  sW t	  t | j j j t j  sx t	  t | j j j t j  s t	  t | j j j t j  s t	  d  S(   NR   (   R=   R   R/   Rs   R#   R   Rq   Rt   Ru   Rv   R$   t   integerR%   t   bool_R&   R'   t   object(   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_default_type_conversion	  s    !!!!c         C  s[   t  d i d g d 6 } | j d |  j d t t j d |  j  } t j | |  d  S(   NRY   i   i>   t   i64t   test_bigintR}   I       @(   R
   R   R/   R   R=   R   Rw   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s:   t  j d |  j  } t | j j j t j  s6 t	  d  S(   NR   (
   R=   R   R/   Rs   R    R   Rq   Rt   R   Rv   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_default_date_load  s    c         C  s  d   } t  j d |  j  } t | d  s= t j d  n  | j } t | j  s[ t	  t  j d |  j d d g } t | d  s t j d  n  | j } t | j  s t	  t
 | j j  d k s t	  | | j  t  j t t  j d |  j d d  d	 t } | j } t | j  s/t	  t
 | j j  d k sMt	  t j d
 |  j  } | j } t | j  st	  t j | j | j  t j d
 |  j  } | | j  d  S(   Nc         S  s   t  |  j  rJ |  d t d  k s+ t  |  d t d  k s t  n t |  j  r t |  j j  d k sw t  t d d d t d d d g } t | d |  j	 } t
 j |  |  n t d j |  j    d  S(	   Ni    s   2000-01-01 08:00:00i   s   2000-06-01 07:00:00t   UTCt   tzR   s)   DateCol loaded with incorrect type -> {0}(   R   R   R   Rv   R	   t   strt   dtR  R   R   Rw   R  R  (   R  t   expected_datat   expected(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   )  s    	s   select * from types_test_dataR)   s&   no column with datetime with time zoneR   R  R   i   R)  R   (   R   R   R/   R0   R   RB  R)   R	   R   Rv   R  R  R  R   R,  R   R=   R   Rw   R  (   R4   R   R   R  R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_datetime_with_timezone$  s4    							c         C  s  t  i t d d d d d d 6 } | j d |  j d t |  j d	 k rj | d j j d
  | d <n | d j j d   | d <t
 j d |  j  } t j | |  t
 j d |  j  } |  j d k r t | j d t  s t  t | d  | d <n  t j | |  d  S(   Ns   2013-01-01 09:00:00t   periodsi   R  s
   US/PacificR~   t   test_datetime_tzR}   R   R  s   SELECT * FROM test_datetime_tzR   i    (   i    R~   (   R
   R   R   R/   R   Ra   R  t
   tz_convertt   tz_localizeRc   R=   R   Rw   R   R   Rd  t   locR   Rv   R   (   R4   R  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt%   test_datetime_with_timezone_roundtripk  s    	c         C  s   t  d d d d d } t i t d  d 6d | } | j d |  j d	 d
 t j d |  j d d
 } t j | | d t	 d  S(   Ns
   2018-01-01R  i   t   freqt   6Ht   numsR}   t	   foo_tableR  t	   info_dateR   t   check_names(
   R   R
   R   R   R/   R=   R   Rw   R   R   (   R4   t   datesR  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt"   test_naive_datetimeindex_roundtrip  s    	c         C  s  t  j d |  j  } |  j d k r* t n t j } t | j j	 j
 |  sQ t  t  j d |  j d d g } t | j j	 j
 t j  s t  t  j d |  j d i d d 6} t | j j	 j
 t j  s t  t  j d |  j d i i d d 6d 6} t | j j	 j
 t j  st  t  j d |  j d d g } t | j j	 j
 t j  s\t  t  j d |  j d i d d 6} t | j j	 j
 t j  st  t  j d |  j d i i d d	 6d 6} t | j j	 j
 t j  st  d  S(
   NR   R   R   R    s   %Y-%m-%d %H:%M:%SR  R!   R   t   unit(   R=   R   R/   Ra   R  Rt   R   Rs   R    R   Rq   Rv   R!   (   R4   R   t   expected_type(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s*    !!!!!c         C  s  t  i t d d d d 6t j d  d 6 } | j d |  j  t j d |  j  } | j d d	 d
 } t	 j
 | |  t j d |  j  } | j d d	 d
 } |  j d k r t | j d t  s t  t | d  | d <t	 j
 | |  n t	 j
 | |  d  S(   Ns   2013-01-01 09:00:00R  i   R~   g      @R   t   test_datetimeR}   t   axisi   s   SELECT * FROM test_datetimeR   i    (   i    R~   (   R
   R   Rt   R   R   R/   R=   R   t   dropRw   R   R   Ra   Rd  R  R   Rv   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   t  i t d d d d 6t j d  d 6 } t j | j d <| j d |  j d	 t t	 j
 d |  j  } t j | |  t	 j d
 |  j  } |  j d k r t | j d t  s t  t | d d d | d <t j | |  n t j | |  d  S(   Ns   2013-01-01 09:00:00R  i   R~   g      @R   i   R  R}   s   SELECT * FROM test_datetimeR   i    t   errorst   coerce(   i   R~   (   i    R~   (   R
   R   Rt   R   R;  R  R   R/   R   R=   R   Rw   R   R   Ra   Rd  R   Rv   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_datetime_NaT  s    c         C  s   t  t d d d  t d d d  g d d g } | j d |  j d t t d |  j  } | d } t | d  } t j | |  d  S(   Ni  i   i   R   R  t	   test_dateR}   (	   R
   R   R   R/   R   R   R   Rw   R  (   R4   R   R   R   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_datetime_date  s    3
c         C  sU  t  t d d d  t d d d  g d d g } | j d |  j d t t d |  j  } t j | |  t j	   } t
 j | d	 | d t t
 j d
 |  } | j d    } t j | |  t
 j | d |  j d t |  j d k r,t
 j d |  j  } | j d    } t j | |  n  t
 j d |  j  } t j | |  d  S(   Ni	   i    i   i   R   R  t	   test_timeR}   t
   test_time2s   SELECT * FROM test_time2c         S  s   |  j  d  S(   Ns   %H:%M:%S.%f(   t   strftime(   t   _(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   <lambda>  s    t
   test_time3R   s   SELECT * FROM test_time3c         S  s   |  j  d  S(   Ns   %H:%M:%S.%f(   R  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    (   R
   R   R   R/   R   R   Rw   R   t   TestSQLiteFallbackR   R=   R   t   applymapRa   (   R4   R   R   t   sqlite_connt   ref(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_datetime_time  s     3c         C  s   t  d d t j } t  d d t j } t i | d 6| d 6 } | j d |  j d	 t t j	 d |  j  } t
 j | | d
 t d t d  S(   Ni   i   i   R   g        t   s1R   t   test_read_writeR}   t   check_dtypet   check_exacti   i  (   R   Rt   t   int32t   float32R
   R   R/   R   R=   R   Rw   R   R   (   R4   R  R   R   R8  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_mixed_dtype_insert  s    c         C  s   t  i d d d g d 6d t j d g d 6 } | j d |  j d	 t t j d |  j  } t j	 | |  t j
 d
 |  j  } t j	 | |  d  S(   Ni    i   i   R~   g?gffffff@R   t   test_nanR}   s   SELECT * FROM test_nan(   R
   Rt   R;  R   R/   R   R=   R   Rw   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_nan_numeric  s    /c         C  s   t  i d d d g d 6t j t j t j g d 6 } | j d |  j d t t j d |  j  } t j	 | |  | d j
 d  | d <d  | d <t j d	 |  j  } t j	 | |  d  S(
   Ni    i   i   R~   R   R  R}   R  s   SELECT * FROM test_nan(   R
   Rt   R;  R   R/   R   R=   R   Rw   R   R   Rc   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_nan_fullcolumn  s    5
c         C  s   t  i d d d g d 6d d t j g d 6 } | j d |  j d	 t d  | j d <t j	 d |  j  } t
 j | |  t j d
 |  j  } t
 j | |  d  S(   Ni    i   i   R~   R  R  R   R  R}   s   SELECT * FROM test_nan(   i   R   (   R
   Rt   R;  R   R/   R   Rc   R  R=   R   Rw   R   R   (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_nan_string!  s    /c         C  sU   d d l  m } | j j |  j  } | j |  } g  | D] } | d ^ q; } | S(   Ni(   RU  RW  (   RX  RU  RY  RZ  R/   R[  (   R4   R\  RU  R]  R^  R.  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   1  s
    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_to_sql_save_index8  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_transactions;  s    c         C  s   |  j    d } t j |  j | d |  j } |  j j d  } |  j |  |  j j |  t j | |  j  } t	 j
 | | d t |  j |  d  S(   Nt   test_get_schema_create_tableR   i    R  (   R   R=   R  R   R/   Rr   R2   R<   R   Rw   R   R   (   R4   R6   R  t   blank_test_dft   returned_df(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  >  s    
c      	   C  s  d d g } d t  f d g } t | d | } | j d |  j  | j d |  j d i t j d 6t j j d	 |  j  } | j	   | j
 d j d j } t | t j  s t  t j t | j d
 |  j d i t d 6| j d |  j d i t j d  d 6| j	   | j
 d j d j } t | t j  sBt  | j d k sWt  | j d |  j d t j t j j d	 |  j  } | j	   | j
 d j d j } | j
 d j d j } t | t j  st  t | t j  st  d  S(   NR~   R   g?g?R   t
   dtype_testt   dtype_test2R   RL   R   t   dtype_test3i
   t   single_dtype_test(   g?N(   R   Rc   R
   R   R/   RM   Rw  RN   RO   RP   RQ   R   Rq   Rd  Rv   R   R   R   R  t   StringR   (   R4   RD  RY   R   RS   t   sqltypet   sqltypeat   sqltypeb(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt
   test_dtypeO  s0    		#
)

c         C  sq  i t  t d  g  d 6t  t d d d  d  g  d 6t  d d  g d d d 6t  d	 d  g  d
 6} t |  } d } | j | |  j  t j | |  j  } t	 j
 j d |  j  } | j   |  j d k r t j } n	 t j } | j | j } t | d j |  st  t | d j t j  s/t  t | d j t j  sNt  t | d
 j t j  smt  d  S(   Nt   Booli  i   i   t   DateR   R  t   Intg?t   Floatt   notna_dtype_testRL   R   (   R   R   Rc   R   R
   R   R/   R=   R   RM   RN   RO   RP   Ra   Re  R   t   BooleanRQ   R   Rd  Rq   Rv   t   DateTimeR  (   R4   RD  R   R6   R  RS   t   my_typet   col_dict(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_notna_dtypem  s$    
	c         C  s  d } t  i t | g d d d 6t | g d d d 6t | g d d d 6t d g d d	 d
 6t d g d d d 6 } | j d |  j d t d d d i t j d d  d 6t j d |  j  } t	 j
 | d j d d  t	 j
 | d j d d  k st  t j j d |  j  } | j   | j d j } t | d j  t | d j  k skt  t | d j t j  st  t | d j t j  st  t | d
 j t j  st  t | d j t j  st  d  S(   NgYB?R   R  t   f32t   float64t   f64t
   f64_as_f32i   R  t   i32R   R  t   test_dtypesR}   R   R   t	   precisioni   i    i   RL   (   R
   R   R   R/   R   RM   R  R=   R   Rt   t   roundRr   Rv   RN   RO   RP   RQ   R   R  Rq   Rd  Re  R   t
   BigInteger(   R4   t   VR   R   RS   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_double_precision  s&    &
,c           s^   d    d        f d   } t  i d d d g d 6 j d |  j  | |  j  d  S(   Nc         S  s   d } t  j | d |  S(   Ns'   SELECT test_foo_data FROM test_foo_dataR   (   R=   R   (   t
   connectionR   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         S  s    | j  d d d |  d d  d  S(   NR   t   test_foo_dataR   R   R   (   R   (   R  RY   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   bar  s    c           sK   |  j    9 } | j   $ | j   } | j   |  Wd  QXWd  QXd  S(   N(   R   R  t   run_callable(   t   connectableR/   t   foo_data(   R  R   (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   main  s    i    i   i   R  (   R
   R   R/   (   R4   R  (    (   R  R   s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_connectable_issue_example  s    		c   	   	   C  s   d } t  i | g d 6 } t j   } d | f d     Y} t j d |  j  } |   } | j h | j   } | j j	 |  | j
 | d |   | j   t j d t j | j g  d |  } Wd  QXt j | |  d  S(   Nu   Hello, World!t   spamt	   Temporaryc           B  sT   e  Z d  Z i d g d 6Z e j e j d e Z e j e j	 d  d e
 Z RS(   t	   temp_testt	   TEMPORARYt   prefixest   primary_keyi   t   nullable(   R8   R9   t   __tablename__t   __table_args__RM   Ru  R   R   t   idt   UnicodeR   R!  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR"    s   RL   R=   R   (   R
   R   t   declarative_baset
   sa_sessiont   sessionmakerR/   t   transactionR  t	   __table__t   createt   addt   flushR=   R   RM   R  R!  Rw   R   (	   R4   t	   test_dataR  t   BaseR"  t   SessionR   R/   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_temporary_table  s    	

	N(9   R8   R9   R   Rc   Ra   R   R   R   R  R   R   t   classmethodR  R  R   R_   R  R  R  R   R  R   R   R   R  R  R  R  R   R   R  RE  R  R  R  R  R  R  R  R   R  R  R  R  R  R  R  R  R   R  R  R  R  R  R  R   R7  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    sd   !		
											
										G						
													t   _TestSQLAlchemyConnc           B  s   e  Z d    Z RS(   c         C  s   t  j d  d  S(   Ns4   Nested transactions rollbacks don't work with Pandas(   R   RB  (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    (   R8   R9   R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR9    s   t   _TestSQLiteAlchemyc           B  sM   e  Z d  Z d Z e d    Z e d    Z d   Z d   Z d   Z	 RS(   sL   
    Test the sqlalchemy backend against an in-memory sqlite database.

    R   c         C  s   t  j d  S(   Ns   sqlite:///:memory:(   RM   RA  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   d  |  _ d  S(   N(   Rc   t   driver(   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   t  j d |  j  } t | j j j t j  s6 t	  t | j
 j j t j  sW t	  t | j j j t j  sx t	  t | j j j t j  s t	  t | j j j t j  s t	  d  S(   NR   (   R=   R   R/   Rs   R#   R   Rq   Rt   Ru   Rv   R$   R  R%   R&   R'   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    !!!!c         C  s;   t  j d |  j  } t | j j j t j  s7 t	  d  S(   NR   (
   R=   R   R/   Rs   R    R   Rq   Rt   R   Rv   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   t  i d d g d 6d d } | j d |  j d t t j d t  ? } t j d	  t j	 d |  j  t
 |  d
 k s t  Wd  QXd  S(   Ni   i   R  R   R   t   test_bigintwarningR}   RJ  RK  i    (   R
   R   R/   R   RM  RN  R   RO  R=   R   R   Rv   (   R4   R   RQ  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_bigint_warning  s    (
   R8   R9   R   Ra   R8  R   R  R  R  R=  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR:    s   		t   _TestMySQLAlchemyc           B  sD   e  Z d  Z d Z e d    Z e d    Z d   Z d   Z RS(   sA   
    Test the sqlalchemy backend against an MySQL database.

    R   c         C  s+   d } t  j | j d |  j  d |  j S(   Ns/   mysql+{driver}://root@localhost/pandas_nosetestR;  t   connect_args(   RM   RA  R  R;  R?  (   R  t   url(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s5   t  j d  } d |  _ i | j j j d 6|  _ d  S(   Nt   pymysqlt   client_flag(   R   t   importorskipR;  t	   constantst   CLIENTt   MULTI_STATEMENTSR?  (   R  RA  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    	c         C  s   t  j d |  j  } t | j j j t j  s6 t	  t | j
 j j t j  sW t	  t | j j j t j  sx t	  t | j j j t j  s t	  t | j j j t j  s t	  d  S(   NR   (   R=   R   R/   Rs   R#   R   Rq   Rt   Ru   Rv   R$   R  R%   R&   R'   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    !!!!c   	      C  s  d d  l  } t i d d d g d 6d d d g d	 6 } | j d
 |  j d t d } |  j j   } | j   } y | j |  } | j   Wn! | j	 k
 r | j
     n Xt j d |  j  } t j | |  t j d |  j  } t j | |  d  S(   Nii   i   i   R  g?g?g333333?R  t   test_procedureR}   s   DROP PROCEDURE IF EXISTS get_testdb;

        CREATE PROCEDURE get_testdb ()

        BEGIN
            SELECT * FROM test_procedure;
        ENDs   CALL get_testdb();(   RA  R
   R   R/   R   R   R  R<   R?   RD   R  R=   R   Rw   R   R   (	   R4   RA  R   t   procR  R   t   r1R-  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_read_procedure,  s     ,
(	   R8   R9   R   Ra   R8  R   R  R  RJ  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR>  	  s   	t   _TestPostgreSQLAlchemyc           B  sD   e  Z d  Z d Z e d    Z e d    Z d   Z d   Z RS(   sF   
    Test the sqlalchemy backend against an PostgreSQL database.

    R   c         C  s"   d } t  j | j d |  j   S(   Ns8   postgresql+{driver}://postgres@localhost/pandas_nosetestR;  (   RM   RA  R  R;  (   R  R@  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   S  s    c         C  s   t  j d  d |  _ d  S(   Nt   psycopg2(   R   RC  R;  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  X  s    c   
   	   C  s  t  i d d g d 6d d g d 6d d g d	 6 } |  j j d
  |  j j d  | j d |  j d t | j d |  j d t d d | j d |  j d t d d t j d |  j  } t j | |  t j d |  j  } t j | |  t j d |  j d d } t j | |  t j d |  j d d } t j | |  t	 j
 t t j d |  j d d |  j j d
  |  j j d  | j d |  j d d d t | j d |  j d d d t d d | j d |  j d d d t d d t j d |  j d d } t j t | | g d t |  t |  j t j j  r|  j   } t j | d d } t j | d | }	 |	 j | d d t |	 j | d d t d d |	 j | d d t d d t j d |  j d d } |	 j d  } t j | |  n  d  S(   Ni   i   R  g?g?t   col2R  t   nt   col3s$   DROP SCHEMA IF EXISTS other CASCADE;s   CREATE SCHEMA other;t   test_schema_publicR}   t   test_schema_public_explicitRN   t   publict   test_schema_othert   otherR   R   R   R)  RS   t   test_schema_other2(   R
   R/   R<   R   R   R=   R   Rw   R   R   R   R   R   R   Rd  RM   R  t   EngineR   RO   RK   t
   read_table(
   R4   R   R-  R   R1  t   res4R   t   engine2RS   t   pdsql(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_schema_support]  sV     		"c         C  s   d   } t  i d d g d 6d d g d 6d d	 g d
 6 } | j d |  j d t d | t j d |  j  } t j | |  d  S(   Nc      	   S  s   | j  } | j    } t j   } t j |  } | j |  | j d  d j d   | D  } |  j	 r d j
 |  j	 |  j  }	 n	 |  j }	 d j
 |	 |  }
 | j d |
 d |  Wd  QXd  S(   Ni    s   , c         s  s   |  ] } d  j  |  Vq d S(   s   "{}"N(   R  (   t   .0t   k(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pys	   <genexpr>  s    s   {}.{}s    COPY {} ({}) FROM STDIN WITH CSVR=   t   file(   R  R;   t   compatt   StringIORd   t   writert	   writerowst   seekt   joinRN   R  R   t   copy_expert(   RC   R/   RR   R   t
   dbapi_connRA   t   s_bufRa  R   R@   t	   sql_query(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   psql_insert_copy  s    			i   i   R  g?g?RM  R  RN  RO  t   test_copy_insertR}   R5   (   R
   R   R/   R   R=   R   Rw   R   (   R4   Ri  R  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt(   test_copy_from_callable_insertion_method  s    	 (	   R8   R9   R   Ra   R8  R   R  R[  Rk  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRK  L  s   	@t   TestMySQLAlchemyc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRl    s   t   TestMySQLAlchemyConnc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRm    s   t   TestPostgreSQLAlchemyc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRn    s   t   TestPostgreSQLAlchemyConnc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRo    s   t   TestSQLiteAlchemyc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRp    s   t   TestSQLiteAlchemyConnc           B  s   e  Z RS(    (   R8   R9   (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyRq    s   R  c           B  s  e  Z d  Z d Z e d    Z d   Z d   Z e j	 d e
  d    Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sG   
    Test the fallback mode against an in-memory sqlite database.

    R   c         C  s   t  j d  S(   Ns   :memory:(   R  R   (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    |  _ d  S(   N(   R   R/   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR_     s    c         C  s#   t  j |  j  |  _ |  j   d  S(   N(   R=   R  R/   R   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    R   c         C  s   |  j    d  S(   N(   R   (   R4   Rm   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   
  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   t  i d d d d g d 6d d d d g d 6 } |  j j | d  |  j j d  s] t  |  j j d  |  j j d  s t  d  S(   Ng      ?g       @g      @g      @R  R  t   drop_test_frame(   R
   R   R   R   Rv   R2   (   R4   R
  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_create_and_drop_table  s    /c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s    c         C  s   t  t d d d  t d d d  g d d g } | j d |  j d t t d |  j  } |  j d	 k r t j | | j	 t
   n" |  j d
 k r t j | |  n  d  S(   Ni  i   i   R   R  R  R}   s   SELECT * FROM test_dateR   R   (   R
   R   R   R/   R   R   Ra   Rw   R   R   R  (   R4   R   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  "  s    3c         C  s   t  t d d d  t d d d  g d d g } | j d |  j d t t d	 |  j  } |  j d
 k r | j d    } t j	 | |  n  d  S(   Ni	   i    i   i   R   R  R  R}   s   SELECT * FROM test_timeR   c         S  s   |  j  d  S(   Ns   %H:%M:%S.%f(   R  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  4  s    (
   R
   R   R   R/   R   R   Ra   R  Rw   R   (   R4   R   R   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  -  s    3c         C  sj   t  j d d | |  j  } g  } x@ | j D]5 } t  j d | |  j  } | j | j j    q- W| S(   Ns1   SELECT * FROM sqlite_master WHERE type = 'index' s   AND tbl_name = '%s's   PRAGMA index_info(%s)(   R=   R   R/   R   R   R   (   R4   R\  R^  R   t   ix_namet   ix_info(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   7  s    c         C  s   |  j    d  S(   N(   R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  B  s    c         C  s$   t  r t j d  n  |  j   d  S(   Ns   not working on python > 3.5(   R   R   RB  R   (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  E  s    c   
      C  sc   |  j  j d |  } x0 | D]( \ } } } } } }	 | | k r | Sq Wt d | | f   d  S(   Ns   PRAGMA table_info(%s)s   Table %s, column %s not found(   R/   R<   R   (
   R4   RC   R  t   recst   cidR   t   ctypet   not_nullt   defaultt   pk(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  J  s
    c      	   C  s@  |  j  d k r t j d  n  d d g } d t f d g } t | d | } | j d |  j  | j d	 |  j d
 i d d 6|  j d d  d k s t	  |  j d	 d  d k s t	  t j
 t | j d |  j d
 i t d 6| j d |  j d
 d |  j d d  d k st	  |  j d d  d k s<t	  d  S(   NR   s   Not applicable to MySQL legacyR~   R   g?g?R   R  R  R   t   STRINGR  R   R  (   g?N(   Ra   R   RB  R   Rc   R
   R   R/   R  Rv   R   R   t   bool(   R4   RD  RY   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  Q  s&    		 c         C  s$  |  j  d k r t j d  n  i t t d  g  d 6t t d d d  d  g  d 6t d d  g d d	 d
 6t d d  g  d 6} t |  } d } | j | |  j	  |  j
 | d  d k s t  |  j
 | d  d k s t  |  j
 | d
  d k st  |  j
 | d  d k s t  d  S(   NR   s   Not applicable to MySQL legacyR  i  i   i   R  R   R  R  g?R  R  R  Rf  Rv  (   Ra   R   RB  R   R   Rc   R   R
   R   R/   R  Rv   (   R4   RD  R   R6   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  k  s    c         C  s  t  d d g d d g g d d d g } t j t | j d |  j  x t d	 d
 d d d d d d d d g
  D] \ } } | j | |  j  t j | |  j  t  d d g d d g g d d | g } d | } | j | |  j  t j | |  j  qq Wd  S(   Ni   i   i   i   R   R  R  t    s   test_weird_name]s   test_weird_name[s   test_weird_name`s   test_weird_name"s   test_weird_name's   _b.test_weird_name_01-30s   "_b.test_weird_name_01-30"t   99beginswithnumbert   12345u   és   test_weird_col_name%d(	   R
   R   R   R   R   R/   t	   enumerateR=   t   table_exists(   R4   R   t   ndxt
   weird_nameR8  t   c_tbl(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_illegal_names~  s    *	*
(    R8   R9   R   Ra   R8  R   R_   R   R   R   R   R   R  R  R  R   R  R   R   R   Rs  R   R   R  R  R   R  R  R  R  R  R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s4   															
						c         C  s   |  j  d  S(   s    Returns date in YYYYMMDD format.s   %Y%m%d(   R  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   date_format  s    c         C  s   d t  |   S(   Ns   '%s'(   R  (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   '%s'(    (   t   x(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   '%s'(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   '%s'(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   '%s'(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   %.8f(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   %s(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d S(   Nt   NULL(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   %.10f(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         C  s   d |  S(   Ns   '%s'(    (   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s    c         G  sl   g  } xU | D]M } t  | t  r7 t |  r7 d } n  t t |  } | j | |   q W|  t |  S(   s   

    N(   Rd  t   floatR   Rc   t   _formattersRq   R   t   tuple(   R=   t   argst   processed_argst   argt	   formatter(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   format_query  s    	c         C  s?   t  j |  d | d | j   } | d k r1 d St |  Sd S(   s#   Replace removed sql.tquery functionR   RA   N(   R=   R<   RB   Rc   R,  (   R   R   RA   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   tquery  s    !t   TestXSQLitec           B  s   e  Z e j d  e  d    Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z d	   Z d
   Z d   Z d   Z RS(   R   c         c  sE   | j  |  _ t j d  |  _ d  V| j  |  _ t j d  |  _ d  S(   Ns   :memory:(   t   functionR5   R  R   R/   (   R4   Rh   Rg   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR     s
    c         C  s   t  j   } |  j |  d  S(   N(   Rw   t   makeTimeDataFramet   _check_roundtrip(   R4   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt
   test_basic  s    c   	      C  s   t  j   } t j | j d <t j | d  } |  j j   } | j	 |  |  j j   } d } x9 | j
   D]+ \ } } t | |  } t | d | ql W|  j j   t j d d |  j } | j | _ t  j | | d t d  S(	   Ni    R  s(   INSERT INTO test VALUES (%s, %s, %s, %s)RA   s   select * from testR   t   check_less_precise(   i    i    (   Rw   R  Rt   R;  Rr   R=   R  R/   R;   R<   t   iterrowsR  R  R?   R   R}   R   R   (	   R4   R  R  RA   Rk   t   idxRl   t   fmt_sqlR   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_write_row_by_row  s    c         C  s   t  j   } t j | d  } |  j j   } | j |  d } | j d } t j | |  j d t |  |  j j	   t j
 d |  j  } | j d  | _ t  j | | d   d  S(   NR  s$   INSERT INTO test VALUES (?, ?, ?, ?)i    RW   s   select * from testi   (   Rw   R  R=   R  R/   R;   R<   Rr   R  R?   R   R}   R   (   R4   R  R  RA   Rk   Rl   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_execute  s    c         C  s   t  j   } t j | d  } | j   } xX | D]P } | j d  } t |  d k r1 | d d k r1 | d d k s t  q1 q1 Wt  j   } t j | d d d d	 g } | j   } d
 | k s t  |  j j	   } | j
 |  d  S(   NR  t    i   i    R~   i   t   DATETIMERR   R   s   PRIMARY KEY ("A", "B")(   Rw   R  R=   R  t
   splitlinesR  R   Rv   R/   R;   R<   (   R4   R  R  t   linest   lt   tokensRA   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_schema  s    "c         C  su   d } |  j  j   } | j |  t j d |  j   t j d |  j   t j t   t j d |  j   Wd  QXd  S(   Ns   
        CREATE TABLE test
        (
        a TEXT,
        b TEXT,
        c REAL,
        PRIMARY KEY (a, b)
        );
        s,   INSERT INTO test VALUES("foo", "bar", 1.234)s,   INSERT INTO test VALUES("foo", "baz", 2.567)s(   INSERT INTO test VALUES("foo", "bar", 7)(   R/   R;   R<   R=   R   R   R   (   R4   R  RA   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_execute_fail	  s    	c         C  so   d } |  j  j   } | j |  t j d |  j   |  j  j   t j t   t d d |  j  Wd  QXd  S(   Ns   
        CREATE TABLE test
        (
        a TEXT,
        b TEXT,
        c REAL,
        PRIMARY KEY (a, b)
        );
        s,   INSERT INTO test VALUES("foo", "bar", 1.234)s   select * from testR   (	   R/   R;   R<   R=   RF   R   R   R   R  (   R4   R  RA   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_execute_closed_connection	  s    	c         C  s   d  S(   N(    (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_na_roundtrip.	  s    c         C  s$  t  j | d d d |  j d t t  j d |  j  } | j | _ | } t j | |  d g t |  | d <| j	   } t
 t t |    d | d	 <t  j | d d
 d |  j d t t  j d |  j d d	 } | j	   } t
 t t |    d | _ d	 | j _ t j | |  d  S(   NR   t
   test_tableR   R}   s   select * from test_tableR  t   txti
   t   Idxt   test_table2s   select * from test_table2R   (   R=   R   R/   R   R   R}   Rw   R   R   R7  R   R   R   (   R4   R  R   R  t   frame2(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  1	  s    " "	c         C  sB   t  i t j d  d 6 } t j | d |  j d d d t d  S(   Ni   t   FromR   R   t   testkeywordsR}   (   R
   Rt   t   onesR=   R   R/   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_keyword_as_column_namesF	  s    c         C  s   t  d d g d d g } t j | d |  j d d d t |  j } t d	   | j d
  D  } | d k sw t  t j d
 |  } t	 j
 | |  d  S(   Ni   i   R   t   c0R   R   t   mono_dfR}   c         s  s   |  ] } | d  Vq d S(   i    N(    (   R\  t   my_c0(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pys	   <genexpr>R	  s   s   select * from mono_dfi   (   R
   R=   R   R/   R   t   sumR<   Rv   R   Rw   R   (   R4   R  t   con_xt   the_sumR   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_onecolumn_of_integerJ	  s    "		c           sh  t  i d d g d 6d d g d 6 } t  i d d d	 g d 6d
 d d g d 6 } d } d | }   f d   } t j t t j d | d   j d | d d | |  t j d | d   j d | d d  t j t t j d | d   j d | d d t j d | d   j d | d d d t  t | d   j d d g k sNt	  t j d | d   j d | d d d t  t | d   j d d d g k st	  | |  t j d | d   j d | d d d t  t | d   j d d g k st	  t j d | d   j d | d d d t  t | d   j d  d! d" d# d$ g k sZt	  | |  d  S(%   Ni   i   R  R~   R   RM  i   i   i   R   R   R   t   table_if_existss   SELECT * FROM %sc           s     j  |   d S(   s   
            Drops tables created from individual tests
            so no dependencies arise from sequential tests
            N(   R2   (   t   test_table_to_drop(   R4   (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   clean_upa	  s    R  R   R   R   t   notvalidvalueR   R   R}   R   (   i   R~   (   i   R   (   i   R   (   i   R   (   i   R   (   i   R~   (   i   R   (   i   R~   (   i   R   (   i   R   (   i   R   (   i   R   (
   R
   R   R   R   R=   R   R/   R   R  Rv   (   R4   t   df_if_exists_1t   df_if_exists_2R@   t
   sql_selectR  (    (   R4   s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_if_existsZ	  sJ    &)
			
			'
'(   R8   R9   R   R   R   R   R  R  R  R  R  R  R  R  R  R  R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR    s   										t   reasonsF   gh-13611: there is no support for MySQL if SQLAlchemy is not installedt
   TestXMySQLc           B  s   e  Z e j d  e d d  d    Z e j d  e  d    Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z RS(   R   R  R  c      	   C  s   t  j d  } | j d d d d d d d d	  y | j d
 d  Wn? | j k
 rg t d   n  | j k
 r t d   n Xd  S(   NRA  t   hostt	   localhostt   usert   roott   passwdR~  Rg  t   pandas_nosetestt   read_default_groupt   pandass   Create a group of connection parameters under the heading [pandas] in your system's mysql default file, typically located at ~/.my.cnf or /etc/.my.cnf.s   Cannot connect to database. Create a group of connection parameters under the heading [pandas] in your system's mysql default file, typically located at ~/.my.cnf or /etc/.my.cnf.(   R   RC  R   t   ProgrammingErrort   RuntimeErrorRD   (   R  RA  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  	  s    c      	   C  s   t  j d  } | j d d d d d d d d	  y | j d
 d  Wn? | j k
 rg t d   n  | j k
 r t d   n X| j |  _ d  S(   NRA  R  R  R  R  R  R~  Rg  R  R  R  s   Create a group of connection parameters under the heading [pandas] in your system's mysql default file, typically located at ~/.my.cnf or /etc/.my.cnf.s   Cannot connect to database. Create a group of connection parameters under the heading [pandas] in your system's mysql default file, typically located at ~/.my.cnf or /etc/.my.cnf.(   R   RC  R   R  R  RD   R  R5   (   R4   Rh   Rg   RA  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR   	  s    c         C  s   t  j   } |  j |  d  S(   N(   Rw   R  R  (   R4   R  (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  	  s    c   
      C  s   t  j   } t j | j d	 <d } t j | d  } |  j j   } | j	 |  | j	 |  d } x9 | j
   D]+ \ } } t | |  } t | d | qp W|  j j   t j d d |  j }	 | j |	 _ t  j |	 | d t d  S(
   Ni    s   DROP TABLE IF EXISTS testR  s(   INSERT INTO test VALUES (%s, %s, %s, %s)RA   s   select * from testR   R  (   i    i    (   Rw   R  Rt   R;  Rr   R=   R  R/   R;   R<   R  R  R  R?   R   R}   R   R   (
   R4   R  t   drop_sqlR  RA   Rk   R  Rl   R  R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  	  s    c      	   C  s   t  j   } d | j _ d } |  j j   } | j |  t j | d d d |  j d } d } t	 j
 d | d |  j d	 | d
 d  } t |  } t  j | |  |  d  S(   NR}   s   DROP TABLE IF EXISTS testR   R  R   s   select * from testi   R=   R   R   (   Rw   R  R}   R   R/   R;   R<   R=   R   R   R   Rf   R   (   R4   R  R  RA   R   R   t	   chunk_gent   chunk_df(    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   test_chunksize_read_type	  s    c         C  s   t  j   } d } t j | d  } |  j j   } t j   " t j d d  | j	 |  Wd  QX| j	 |  d } | j
 d j j   } t j	 | |  j d t |  |  j j   t j d |  j  } | j d	  | _ t  j | | d	   d  S(
   Ns   DROP TABLE IF EXISTS testR  t   ignores   Unknown table.*s(   INSERT INTO test VALUES (%s, %s, %s, %s)i    RW   s   select * from testi   (   Rw   R  R=   R  R/   R;   RM  RN  R>  R<   Rr   Ry   R   R  R?   R   R}   R   (   R4   R  R  R  RA   Rk   Rl   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  	  s    c         C  s   t  j   } t j | d  } | j   } xX | D]P } | j d  } t |  d k r1 | d d k r1 | d d k s t  q1 q1 Wt  j   } d } t j | d d	 d d
 g } | j   } d | k s t  |  j j	   } | j
 |  | j
 |  d  S(   NR  R  i   i    R~   i   R  s   DROP TABLE IF EXISTS testRR   R   s   PRIMARY KEY (`A`, `B`)(   Rw   R  R=   R  R  R  R   Rv   R/   R;   R<   (   R4   R  R  R  R  R  R  RA   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  	  s    "c         C  s   d } d } |  j  j   } | j |  | j |  t j d |  j   t j d |  j   t j t   t j d |  j   Wd  QXd  S(   Ns   DROP TABLE IF EXISTS tests   
        CREATE TABLE test
        (
        a TEXT,
        b TEXT,
        c REAL,
        PRIMARY KEY (a(5), b(5))
        );
        s,   INSERT INTO test VALUES("foo", "bar", 1.234)s,   INSERT INTO test VALUES("foo", "baz", 2.567)s(   INSERT INTO test VALUES("foo", "bar", 7)(   R/   R;   R<   R=   R   R   R   (   R4   R  R  RA   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  
  s    	c         C  s   d } d } |  j  j   } | j |  | j |  t j d |  j   |  j  j   t j t   t d d |  j  Wd  QX|  j	 | |  d  S(   Ns   DROP TABLE IF EXISTS tests   
        CREATE TABLE test
        (
        a TEXT,
        b TEXT,
        c REAL,
        PRIMARY KEY (a(5), b(5))
        );
        s,   INSERT INTO test VALUES("foo", "bar", 1.234)s   select * from testR   (
   R/   R;   R<   R=   RF   R   R   R   R  R   (   R4   Rh   Rg   R  R  RA   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  
  s    	c         C  s   d  S(   N(    (   R4   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  5
  s    c      
   C  s  d } |  j  j   } t j   " t j d d  | j |  Wd  QXt j | d d d |  j  d t t j	 d |  j   } | j
 | _
 | j
 j | j
 _ | } t j | |  d	 g t |  | d
 <| j   } t t t |    d } | | d <d } |  j  j   } t j   " t j d d  | j |  Wd  QXt j | d d d |  j  d t t j	 d |  j  d d } | j   } | | _
 | j
 j | j
 _ t j | |  d  S(   Ns   DROP TABLE IF EXISTS test_tableR  s   Unknown table.*R   R  R   R}   s   select * from test_tableR  R  i
   R  s    DROP TABLE IF EXISTS test_table2R  s   select * from test_table2R   (   R/   R;   RM  RN  R>  R<   R=   R   R   R   R}   R   Rw   R   R   R7  R   R   R  (   R4   R  R  RA   R   R  R  R}   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  8
  s8    "
		c      
   C  sH   t  i t j d  d 6 } t j | d |  j d d d d d t d  S(	   Ni   R  R   R   R  R   R   R}   (   R
   Rt   R  R=   R   R/   R   (   R4   R   (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  \
  s    c           sn  t  i d d g d 6d d g d 6 } t  i d d d	 g d 6d
 d d g d 6 } d } d | }   f d   } t j t t j d | d   j d | d d | |  t j d | d   j d | d d d t  t j t t j d | d   j d | d d t j d | d   j d | d d d t  t | d   j d d g k sTt	  t j d | d   j d | d d d t  t | d   j d d d g k st	  | |  t j d | d   j d | d d d t  t | d   j d d g k st	  t j d | d   j d | d d d t  t | d   j d  d! d" d# d$ g k s`t	  | |  d  S(%   Ni   i   R  R~   R   RM  i   i   i   R   R   R   R  s   SELECT * FROM %sc           s     j  |   d S(   s   
            Drops tables created from individual tests
            so no dependencies arise from sequential tests
            N(   R2   (   R  (   R4   (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  h
  s    R  R   R   R   R  R   R}   R   R   (   i   R~   (   i   R   (   i   R   (   i   R   (   i   R   (   i   R~   (   i   R   (   i   R~   (   i   R   (   i   R   (   i   R   (   i   R   (
   R
   R   R   R   R=   R   R/   R   R  Rv   (   R4   R  R  R@   R  R  (    (   R4   s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  a
  sJ    &)
			
			'
'(   R8   R9   R   R   R   R  R   R  R  R  R  R  R  R  R  R  R  R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyR  	  s   !									$	(c   R   t
   __future__R    Rd   R   R   R   R  RM  t   numpyRt   R   t   pandas.compatR_  R   R   R   R   t   pandas.core.dtypes.commonR   R	   R  R   R
   R   R   R   R   R   R   R   R   R   t   pandas.util.testingt   utilt   testingRw   t   pandas.io.sqlRX   R=   R   R   RM   t   sqlalchemy.schemat   sqlalchemy.sql.sqltypesRe  t   sqlalchemy.extR   t   sqlalchemy.ormR   R-  R   R@  Rl  R   R`   R  R.   R:   RG   RJ   RU   R   R=  t   singleR?  R  R  R  R  R9  R:  R>  RK  Rg  Rl  Rm  Rn  Ro  Rp  Rq  R  R  R  t   str_t	   text_typet   binary_typeR  R   Rq   Rc   R  R}  R  R  R  R  RB  R  (    (    (    s7   lib/python2.7/site-packages/pandas/tests/io/test_sql.pyt   <module>   s   "F

		
  zN  G0Cp					



				