Skip to content

Commit

Permalink
TST: Fix sqlite3 transactions test (pandas-dev#28450)
Browse files Browse the repository at this point in the history
The sqlite connection is already in transaction when the test starts, so
when the test intentionally raises an exception, the entire transaction,
including the table creation, gets rolled back, so there is no table
to query.  Wrapping the table CREATE statement in its own transaction
avoids the issue.
  • Loading branch information
quintusdias authored and jorisvandenbossche committed Sep 15, 2019
1 parent 08184ff commit 3f0e816
Showing 1 changed file with 3 additions and 7 deletions.
10 changes: 3 additions & 7 deletions pandas/tests/io/test_sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
import numpy as np
import pytest

from pandas.compat import PY36

from pandas.core.dtypes.common import is_datetime64_dtype, is_datetime64tz_dtype

import pandas as pd
Expand Down Expand Up @@ -538,11 +536,11 @@ def _to_sql_save_index(self):
assert ix_cols == [["A"]]

def _transaction_test(self):
self.pandasSQL.execute("CREATE TABLE test_trans (A INT, B TEXT)")

ins_sql = "INSERT INTO test_trans (A,B) VALUES (1, 'blah')"
with self.pandasSQL.run_transaction() as trans:
trans.execute("CREATE TABLE test_trans (A INT, B TEXT)")

# Make sure when transaction is rolled back, no rows get inserted
ins_sql = "INSERT INTO test_trans (A,B) VALUES (1, 'blah')"
try:
with self.pandasSQL.run_transaction() as trans:
trans.execute(ins_sql)
Expand Down Expand Up @@ -2213,8 +2211,6 @@ def test_to_sql_save_index(self):
self._to_sql_save_index()

def test_transactions(self):
if PY36:
pytest.skip("not working on python > 3.5")
self._transaction_test()

def _get_sqlite_column_type(self, table, column):
Expand Down

0 comments on commit 3f0e816

Please sign in to comment.