@@ -574,7 +574,7 @@ def create(self):
574
574
else :
575
575
self ._execute_create ()
576
576
577
- def _exec_insert (self , conn , keys , data_iter ):
577
+ def _execute_insert (self , conn , keys , data_iter ):
578
578
"""Execute SQL statement inserting data
579
579
580
580
Parameters
@@ -585,7 +585,7 @@ def _exec_insert(self, conn, keys, data_iter):
585
585
data = [{k : v for k , v in zip (keys , row )} for row in data_iter ]
586
586
conn .execute (self .table .insert (), data )
587
587
588
- def _exec_insert_multi (self , conn , keys , data_iter ):
588
+ def _execute_insert_multi (self , conn , keys , data_iter ):
589
589
"""Alternative to _exec_insert for DBs that support multivalue INSERT.
590
590
591
591
Note: multi-value insert is usually faster for a few columns
@@ -594,7 +594,7 @@ def _exec_insert_multi(self, conn, keys, data_iter):
594
594
data = [{k : v for k , v in zip (keys , row )} for row in data_iter ]
595
595
conn .execute (self .table .insert (data ))
596
596
597
- def _exec_insert_copy (self , conn , keys , data_iter ):
597
+ def _execute_insert_copy (self , conn , keys , data_iter ):
598
598
"""Alternative to _exec_insert for DBs that support COPY FROM
599
599
"""
600
600
# gets a DBAPI connection that can provide a cursor
@@ -615,7 +615,6 @@ def _exec_insert_copy(self, conn, keys, data_iter):
615
615
table_name , columns )
616
616
cur .copy_expert (sql = sql , file = s_buf )
617
617
618
-
619
618
def insert_data (self ):
620
619
if self .index is not None :
621
620
temp = self .frame .copy ()
@@ -652,16 +651,15 @@ def insert_data(self):
652
651
653
652
return column_names , data_list
654
653
655
-
656
654
def insert (self , chunksize = None , method = None ):
657
655
658
656
# set insert method
659
657
if method in (None , 'default' ):
660
- exec_insert = self ._exec_insert
658
+ exec_insert = self ._execute_insert
661
659
elif method == 'multi' :
662
- exec_insert = self ._exec_insert_multi
660
+ exec_insert = self ._execute_insert_multi
663
661
elif method == 'copy' :
664
- exec_insert = self ._exec_insert_copy
662
+ exec_insert = self ._execute_insert_copy
665
663
else :
666
664
# TODO: support callables?
667
665
raise ValueError ('Invalid parameter `method`: {}' .format (method ))
@@ -690,8 +688,6 @@ def insert(self, chunksize=None, method=None):
690
688
chunk_iter = zip (* [arr [start_i :end_i ] for arr in data_list ])
691
689
exec_insert (conn , keys , chunk_iter )
692
690
693
-
694
-
695
691
def _query_iterator (self , result , chunksize , columns , coerce_float = True ,
696
692
parse_dates = None ):
697
693
"""Return generator through chunked result set."""
@@ -1487,7 +1483,8 @@ def _fetchall_as_list(self, cur):
1487
1483
return result
1488
1484
1489
1485
def to_sql (self , frame , name , if_exists = 'fail' , index = True ,
1490
- index_label = None , schema = None , chunksize = None , dtype = None ):
1486
+ index_label = None , schema = None , chunksize = None , dtype = None ,
1487
+ method = None ):
1491
1488
"""
1492
1489
Write records stored in a DataFrame to a SQL database.
1493
1490
@@ -1531,7 +1528,7 @@ def to_sql(self, frame, name, if_exists='fail', index=True,
1531
1528
if_exists = if_exists , index_label = index_label ,
1532
1529
dtype = dtype )
1533
1530
table .create ()
1534
- table .insert (chunksize )
1531
+ table .insert (chunksize , method )
1535
1532
1536
1533
def has_table (self , name , schema = None ):
1537
1534
# TODO(wesm): unused?
0 commit comments