Skip to content

Commit ee580cc

Browse files
committed
DML tests
1 parent ab864f7 commit ee580cc

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

scripts/load_test_data.sh

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
bq mk test_pybigquery
22
bq rm -f -t test_pybigquery.sample
33
bq rm -f -t test_pybigquery.sample_one_row
4+
bq rm -f -t test_pybigquery.sample_dml
45
bq load --source_format=NEWLINE_DELIMITED_JSON --schema=$(dirname $0)/schema.json test_pybigquery.sample $(dirname $0)/sample.json
56
bq load --source_format=NEWLINE_DELIMITED_JSON --schema=$(dirname $0)/schema.json test_pybigquery.sample_one_row $(dirname $0)/sample_one_row.json
6-
7+
bq mk --schema=$(dirname $0)/schema.json -t test_pybigquery.sample_dml

test/test_sqlalchemy_bigquery.py

+38-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,19 @@
2626
]
2727

2828

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+
2942
@pytest.fixture(scope='session')
3043
def engine():
3144
engine = create_engine('bigquery://', echo=True)
@@ -42,6 +55,11 @@ def table_one_row(engine):
4255
return Table('test_pybigquery.sample_one_row', MetaData(bind=engine), autoload=True)
4356

4457

58+
@pytest.fixture(scope='session')
59+
def table_dml(engine):
60+
return Table('test_pybigquery.sample_dml', MetaData(bind=engine), autoload=True)
61+
62+
4563
@pytest.fixture(scope='session')
4664
def session(engine):
4765
Session = sessionmaker(bind=engine)
@@ -170,4 +188,23 @@ def test_joins(session, table, table_one_row):
170188
def test_querying_wildcard_tables(engine):
171189
table = Table('bigquery-public-data.noaa_gsod.gsod*', MetaData(bind=engine), autoload=True)
172190
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

Comments
 (0)