mirror of
https://github.com/apache/superset.git
synced 2026-04-20 16:44:46 +00:00
Add fix for pyodbc+mssql (#6621)
* add fix for odbc+mssql * fix for pylint/pep8
This commit is contained in:
committed by
Maxime Beauchemin
parent
ae6217ba55
commit
284a0cccd3
@@ -19,12 +19,14 @@ import sqlalchemy as sqla
|
||||
from superset import dataframe, db, jinja_context, security_manager, sql_lab
|
||||
from superset.connectors.sqla.models import SqlaTable
|
||||
from superset.db_engine_specs import BaseEngineSpec
|
||||
from superset.db_engine_specs import MssqlEngineSpec
|
||||
from superset.models import core as models
|
||||
from superset.models.sql_lab import Query
|
||||
from superset.utils import core as utils
|
||||
from superset.utils.core import get_main_database
|
||||
from superset.views.core import DatabaseView
|
||||
from .base_tests import SupersetTestCase
|
||||
from .fixtures.pyodbcRow import Row
|
||||
|
||||
|
||||
class CoreTests(SupersetTestCase):
|
||||
@@ -673,6 +675,36 @@ class CoreTests(SupersetTestCase):
|
||||
{'data': pd.Timestamp('2017-11-18 22:06:30.061810+0100', tz=tz)},
|
||||
)
|
||||
|
||||
def test_mssql_engine_spec_pymssql(self):
|
||||
# Test for case when tuple is returned (pymssql)
|
||||
data = [(1, 1, datetime.datetime(2017, 10, 19, 23, 39, 16, 660000)),
|
||||
(2, 2, datetime.datetime(2018, 10, 19, 23, 39, 16, 660000))]
|
||||
df = dataframe.SupersetDataFrame(
|
||||
list(data),
|
||||
[['col1'], ['col2'], ['col3']],
|
||||
MssqlEngineSpec)
|
||||
data = df.data
|
||||
self.assertEqual(len(data), 2)
|
||||
self.assertEqual(data[0],
|
||||
{'col1': 1,
|
||||
'col2': 1,
|
||||
'col3': pd.Timestamp('2017-10-19 23:39:16.660000')})
|
||||
|
||||
def test_mssql_engine_spec_odbc(self):
|
||||
# Test for case when pyodbc.Row is returned (msodbc driver)
|
||||
data = [Row((1, 1, datetime.datetime(2017, 10, 19, 23, 39, 16, 660000))),
|
||||
Row((2, 2, datetime.datetime(2018, 10, 19, 23, 39, 16, 660000)))]
|
||||
df = dataframe.SupersetDataFrame(
|
||||
list(data),
|
||||
[['col1'], ['col2'], ['col3']],
|
||||
MssqlEngineSpec)
|
||||
data = df.data
|
||||
self.assertEqual(len(data), 2)
|
||||
self.assertEqual(data[0],
|
||||
{'col1': 1,
|
||||
'col2': 1,
|
||||
'col3': pd.Timestamp('2017-10-19 23:39:16.660000')})
|
||||
|
||||
def test_comments_in_sqlatable_query(self):
|
||||
clean_query = "SELECT '/* val 1 */' as c1, '-- val 2' as c2 FROM tbl"
|
||||
commented_query = '/* comment 1 */' + clean_query + '-- comment 2'
|
||||
|
||||
12
tests/fixtures/pyodbcRow.py
vendored
Normal file
12
tests/fixtures/pyodbcRow.py
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# pylint: disable=C,R,W
|
||||
|
||||
|
||||
class Row(object):
|
||||
def __init__(self, values):
|
||||
self.values = values
|
||||
|
||||
def __name__(self):
|
||||
return 'Row'
|
||||
|
||||
def __iter__(self):
|
||||
return (item for item in self.values)
|
||||
Reference in New Issue
Block a user