26
26
]
27
27
28
28
29
+ ONE_ROW_CONTENTS_DML = [
30
+ 588 ,
31
+ datetime .datetime (2013 , 10 , 10 , 11 , 27 , 16 , tzinfo = timezone ('UTC' )),
32
+ 'test' ,
33
+ 40.76727216 ,
34
+ False ,
35
+ datetime .date (2013 , 10 , 10 ),
36
+ datetime .datetime (2013 , 10 , 10 , 11 , 27 , 16 ),
37
+ datetime .time (11 , 27 , 16 ),
38
+ 'test_bytes'
39
+ ]
40
+
41
+
29
42
@pytest .fixture (scope = 'session' )
30
43
def engine ():
31
44
engine = create_engine ('bigquery://' , echo = True )
@@ -42,6 +55,11 @@ def table_one_row(engine):
42
55
return Table ('test_pybigquery.sample_one_row' , MetaData (bind = engine ), autoload = True )
43
56
44
57
58
+ @pytest .fixture (scope = 'session' )
59
+ def table_dml (engine ):
60
+ return Table ('test_pybigquery.sample_dml' , MetaData (bind = engine ), autoload = True )
61
+
62
+
45
63
@pytest .fixture (scope = 'session' )
46
64
def session (engine ):
47
65
Session = sessionmaker (bind = engine )
@@ -170,4 +188,23 @@ def test_joins(session, table, table_one_row):
170
188
def test_querying_wildcard_tables (engine ):
171
189
table = Table ('bigquery-public-data.noaa_gsod.gsod*' , MetaData (bind = engine ), autoload = True )
172
190
rows = table .select ().limit (1 ).execute ().first ()
173
- assert len (rows ) > 0
191
+ assert len (rows ) > 0
192
+
193
+
194
+ def test_dml (engine , session , table_dml ):
195
+ # test insert
196
+ engine .execute (table_dml .insert (ONE_ROW_CONTENTS_DML ))
197
+ result = table_dml .select ().execute ().fetchall ()
198
+ assert len (result ) == 1
199
+
200
+ # test update
201
+ session .query (table_dml )\
202
+ .filter (table_dml .c .string == 'test' )\
203
+ .update ({'string' : 'updated_row' }, synchronize_session = False )
204
+ updated_result = table_dml .select ().execute ().fetchone ()
205
+ assert updated_result ['string' ] == 'updated_row'
206
+
207
+ # test delete
208
+ session .query (table_dml ).filter (table_dml .c .string == 'updated_row' ).delete (synchronize_session = False )
209
+ result = table_dml .select ().execute ().fetchall ()
210
+ assert len (result ) == 0
0 commit comments