Last active
July 27, 2017 16:57
-
-
Save labeneator/86e5bf413bd0295efc0a964e551b7197 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# OK | |
Note the 'MM' parameter to date_trunc | |
In [65]: qry =""" | |
SELECT | |
trunc(employees.hire_date, 'MM') AS "employees.hire_date_monthly", | |
coalesce(sum(employees.salary), 0) AS "employees.salary_sum" | |
FROM | |
employees JOIN departments ON employees.department_id = departments.department_id | |
GROUP BY trunc(employees.hire_date, 'MM')""" | |
In [66]: print self.sa_seed_model_query.dbm.engine.execute(qry).fetchone() | |
(datetime.datetime(2006, 3, 1, 0, 0), 37000) | |
# Fails | |
# Note that the parameter is a unicode string: u'MM' | |
In [67]: qry =""" | |
SELECT | |
trunc(employees.hire_date, u'MM') AS "employees.hire_date_monthly", | |
coalesce(sum(employees.salary), 0) AS "employees.salary_sum" | |
FROM | |
employees JOIN departments ON employees.department_id = departments.department_id | |
GROUP BY trunc(employees.hire_date, u'MM')""" | |
In [68]: print self.sa_seed_model_query.dbm.engine.execute(qry).fetchone() | |
--------------------------------------------------------------------------- | |
DatabaseError Traceback (most recent call last) | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/dashboard_api/angler/query_factory.py in <module>() | |
----> 1 print self.sa_seed_model_query.dbm.engine.execute(qry).fetchone() | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in execute(self, statement, *multiparams, **params) | |
2062 | |
2063 connection = self.contextual_connect(close_with_result=True) | |
-> 2064 return connection.execute(statement, *multiparams, **params) | |
2065 | |
2066 def scalar(self, statement, *multiparams, **params): | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in execute(self, object, *multiparams, **params) | |
937 """ | |
938 if isinstance(object, util.string_types[0]): | |
--> 939 return self._execute_text(object, multiparams, params) | |
940 try: | |
941 meth = object._execute_on_connection | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _execute_text(self, statement, multiparams, params) | |
1095 statement, | |
1096 parameters, | |
-> 1097 statement, parameters | |
1098 ) | |
1099 if self._has_events or self.engine._has_events: | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _execute_context(self, dialect, constructor, statement, parameters, *args) | |
1187 parameters, | |
1188 cursor, | |
-> 1189 context) | |
1190 | |
1191 if self._has_events or self.engine._has_events: | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _handle_dbapi_exception(self, e, statement, parameters, cursor, context) | |
1400 util.raise_from_cause( | |
1401 sqlalchemy_exception, | |
-> 1402 exc_info | |
1403 ) | |
1404 else: | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/util/compat.pyc in raise_from_cause(exception, exc_info) | |
201 exc_type, exc_value, exc_tb = exc_info | |
202 cause = exc_value if exc_value is not exception else None | |
--> 203 reraise(type(exception), exception, tb=exc_tb, cause=cause) | |
204 | |
205 if py3k: | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/base.pyc in _execute_context(self, dialect, constructor, statement, parameters, *args) | |
1180 statement, | |
1181 parameters, | |
-> 1182 context) | |
1183 except BaseException as e: | |
1184 self._handle_dbapi_exception( | |
/usr/share/python/dashboard-api/local/lib/python2.7/site-packages/sqlalchemy/engine/default.pyc in do_execute(self, cursor, statement, parameters, context) | |
468 | |
469 def do_execute(self, cursor, statement, parameters, context=None): | |
--> 470 cursor.execute(statement, parameters) | |
471 | |
472 def do_execute_no_params(self, cursor, statement, context=None): | |
DatabaseError: (cx_Oracle.DatabaseError) ORA-01899: bad precision specifier | |
[SQL: '\nSELECT trunc(employees.hire_date, u\'MM\') AS "employees.hire_date_monthly", coalesce(sum(employees.salary), 0) AS "employees.salary_sum" FROM employees JOIN departments ON employees.department_id = departments.department_id GROUP BY trunc(employees.hire_date, u\'MM\')\n'] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment