Skip to content

Commit

Permalink
[cherry-picks] Picking cherries
Browse files Browse the repository at this point in the history
  • Loading branch information
john-bodley authored and John Bodley committed May 23, 2018
1 parent bd1273a commit 82a9d25
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
8 changes: 6 additions & 2 deletions superset/models/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -691,9 +691,13 @@ def get_quoter(self):
return self.get_dialect().identifier_preparer.quote

def get_df(self, sql, schema):
sql = sql.strip().strip(';')
sqls = [x.strip() for x in sql.strip().strip(';').split(';')]
eng = self.get_sqla_engine(schema=schema)
df = pd.read_sql(sql, eng)

for i in range(len(sqls) - 1):
eng.execute(sqls[i])

df = pd.read_sql_query(sqls[-1], eng)

def needs_conversion(df_series):
if df_series.empty:
Expand Down
14 changes: 14 additions & 0 deletions tests/model_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,17 @@ def test_database_impersonate_user(self):
model.impersonate_user = False
user_name = make_url(model.get_sqla_engine(user_name=example_user).url).username
self.assertNotEquals(example_user, user_name)

def test_single_statement(self):
main_db = self.get_main_database(db.session)

if main_db.backend == 'mysql':
df = main_db.get_df('SELECT 1', None)
self.assertEquals(df.iat[0, 0], 1)

def test_multi_statement(self):
main_db = self.get_main_database(db.session)

if main_db.backend == 'mysql':
df = main_db.get_df('USE superset; SELECT 1', None)
self.assertEquals(df.iat[0, 0], 1)

0 comments on commit 82a9d25

Please sign in to comment.