File tree Expand file tree Collapse file tree 3 files changed +15
-4
lines changed Expand file tree Collapse file tree 3 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -27,7 +27,7 @@ def write_rows_event(self, event=None):
27
27
pass
28
28
29
29
def write_rows_event_each_row (self , event = None ):
30
- self .writer .insert (event_or_events = event )
30
+ self .writer .insert (event )
31
31
32
32
def reader_idle_event (self ):
33
33
self .writer .flush ()
Original file line number Diff line number Diff line change @@ -74,6 +74,9 @@ def read(self):
74
74
event .table = mysql_event .table
75
75
self .fire ('WriteRowsEvent' , event = event )
76
76
for row in mysql_event .rows :
77
+ event = Event ()
78
+ event .schema = mysql_event .schema
79
+ event .table = mysql_event .table
77
80
event .row = row ['values' ]
78
81
self .fire ('WriteRowsEvent.EachRow' , event = event )
79
82
else :
Original file line number Diff line number Diff line change 4
4
from .writer import Writer
5
5
from ..event .event import Event
6
6
import csv
7
+ import os .path
7
8
8
9
9
10
class CSVWriter (Writer ):
10
11
11
12
file = None
12
13
path = None
13
14
writer = None
15
+ header_written = False
14
16
15
17
def __init__ (self , csv_file_path ):
16
18
self .path = csv_file_path
@@ -20,7 +22,12 @@ def opened(self):
20
22
21
23
def open (self ):
22
24
if not self .opened ():
23
- self .file = open (self .path , 'w' )
25
+ # do not write header to already existing file
26
+ # assume it was written earlier
27
+ if os .path .isfile (self .path ):
28
+ self .header_written = True
29
+ # open file for write-at-the-end mode
30
+ self .file = open (self .path , 'a+' )
24
31
25
32
def insert (self , event_or_events ):
26
33
# event_or_events = [
@@ -49,8 +56,9 @@ def insert(self, event_or_events):
49
56
self .open ()
50
57
51
58
if not self .writer :
52
- self .writer = csv .DictWriter (self .file , fieldnames = event_or_events [0 ].row .keys ())
53
- self .writer .writeheader ()
59
+ self .writer = csv .DictWriter (self .file , fieldnames = sorted (event_or_events [0 ].row .keys ()))
60
+ if not self .header_written :
61
+ self .writer .writeheader ()
54
62
55
63
for event in event_or_events :
56
64
self .writer .writerow (event .row )
You can’t perform that action at this time.
0 commit comments