Skip to content

Instantly share code, notes, and snippets.

@thequbit
Created March 3, 2015 14:45
Show Gist options
  • Save thequbit/e01cb9ae06f3bdb8a9db to your computer and use it in GitHub Desktop.
Save thequbit/e01cb9ae06f3bdb8a9db to your computer and use it in GitHub Desktop.
@classmethod
def get_all_from_assignment_id(cls, session, assignment_id, \
deleted=False, start=0, count=0):
with transaction.manager:
posts_query = session.query(
Posts.post_id,
Posts.assignment_id,
Posts.client_id,
Posts.post_datetime,
Posts.deleted,
Posts.lat,
Posts.lng,
MediaObjects.media_object_id,
MediaObjects.media_id,
MediaObjects.file_name,
MediaObjects.caption,
MediaObjects.media_text,
MediaTypes.name,
MediaTypes.description,
Clients.verified,
Clients.client_id,
Languages.language_code,
Languages.name,
).join(
PostMediaObjects,
).join(
MediaObjects,
).join(
MediaTypes,
).join(
Clients,
Clients.client_id == \
Posts.client_id,
).join(
Languages,
).filter(
Posts.assignment_id == assignment_id,
Posts.deleted == deleted,
).order_by(
desc(Posts.post_datetime),
).group_by(
Posts.post_id,
)
total_post_count = posts_query.count()
if start == 0 and count == 0:
posts = posts_query.all()
else:
posts = posts_query.slice(start, start+count)
return posts, total_post_count
SELECT Count(*) AS count_1
FROM (
SELECT posts.post_id AS posts_post_id,
posts.assignment_id AS posts_assignment_id,
posts.client_id AS posts_client_id,
posts.post_datetime AS posts_post_datetime,
posts.deleted AS posts_deleted,
posts.lat AS posts_lat,
posts.lng AS posts_lng,
mediaobjects.media_object_id AS mediaobjects_media_object_id,
mediaobjects.media_id AS mediaobjects_media_id,
mediaobjects.file_name AS mediaobjects_file_name,
mediaobjects.caption AS mediaobjects_caption,
mediaobjects.media_text AS mediaobjects_media_text,
mediatypes.NAME AS mediatypes_name,
mediatypes.description AS mediatypes_description,
clients.verified AS clients_verified,
clients.client_id AS clients_client_id,
languages.language_code AS languages_language_code,
languages.NAME AS languages_name
FROM posts
JOIN postmediaobjects
ON posts.post_id = postmediaobjects.post_id
JOIN mediaobjects
ON mediaobjects.media_object_id = postmediaobjects.media_object_id
JOIN mediatypes
ON mediatypes.media_type_id = mediaobjects.media_type_id
JOIN clients
ON clients.client_id = posts.client_id
JOIN languages
ON languages.language_id = posts.language_id
WHERE posts.assignment_id = %(assignment_id_1)s
AND posts.deleted = false
GROUP BY posts.post_id
ORDER BY posts.post_datetime DESC) AS anon_1
That produces this error:
2015-03-03 09:40:07,150 ERROR [waitress][Dummy-2] Exception when serving /admin/get_assignment_responses.json
Traceback (most recent call last):
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/waitress-0.8.9-py2.7.egg/waitress/channel.py", line 337, in service
task.service()
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/waitress-0.8.9-py2.7.egg/waitress/task.py", line 173, in service
self.execute()
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/waitress-0.8.9-py2.7.egg/waitress/task.py", line 392, in execute
app_iter = self.channel.server.application(env, start_response)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid-1.5.2-py2.7.egg/pyramid/router.py", line 242, in __call__
response = self.invoke_subrequest(request, use_tweens=True)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid-1.5.2-py2.7.egg/pyramid/router.py", line 217, in invoke_subrequest
response = handle_request(request)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid-1.5.2-py2.7.egg/pyramid/tweens.py", line 21, in excview_tween
response = handler(request)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid_tm-0.8-py2.7.egg/pyramid_tm/__init__.py", line 92, in tm_tween
reraise(*exc_info)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid_tm-0.8-py2.7.egg/pyramid_tm/__init__.py", line 73, in tm_tween
response = handler(request)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid-1.5.2-py2.7.egg/pyramid/router.py", line 163, in handle_request
response = view_callable(context, request)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid-1.5.2-py2.7.egg/pyramid/config/views.py", line 385, in viewresult_to_response
result = view(context, request)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/pyramid-1.5.2-py2.7.egg/pyramid/config/views.py", line 501, in _requestonly_view
response = view(request)
File "<redacted>/yellr-server/yellr-serv/yellrserv/admin_views.py", line 896, in admin_get_assignment_responses
count = count,
File "<redacted>/yellr-server/yellr-serv/yellrserv/models.py", line 1257, in get_all_from_assignment_id
total_post_count = posts_query.count()
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2640, in count
return self.from_self(col).scalar()
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2426, in scalar
ret = self.one()
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2395, in one
ret = list(self)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2438, in __iter__
return self._execute_and_instances(context)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py", line 2453, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 729, in execute
return meth(self, multiparams, params)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 826, in _execute_clauseelement
compiled_sql, distilled_params
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 958, in _execute_context
context)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 1159, in _handle_dbapi_exception
exc_info
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/util/compat.py", line 199, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py", line 951, in _execute_context
context)
File "<redacted>.virtualenvs/yellr-server/local/lib/python2.7/site-packages/SQLAlchemy-0.9.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/default.py", line 436, in do_execute
cursor.execute(statement, parameters)
ProgrammingError: (ProgrammingError) column "mediaobjects.media_object_id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 2: ..., posts.lat AS posts_lat, posts.lng AS posts_lng, mediaobjec...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment