-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
bugSomething isn't workingSomething isn't workingsqlalchemy.extextension modules, most of which are ORM relatedextension modules, most of which are ORM related
Milestone
Description
Migrated issue, originally created by Taha Jahangir
Envrionment: CentOS 7 / Python 3.4.2 / SQL Alchemy 1.0.9
App details: uwsgi web app running in multi-process and multi-thread mode (5 thread per process)
It seems it's a race condition in baked query loading (both in baked relations and explicit baked queries) causes these StatementError errors:
Traceback (most recent call last):
File "site-packages/sqlalchemy/engine/base.py", line 1073, in _execute_context
context = constructor(dialect, self, conn, *args)
File "site-packages/sqlalchemy/engine/default.py", line 552, in _init_compiled
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/engine/default.py", line 552, in <listcomp>
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/sql/compiler.py", line 476, in construct_params
% bindparam.key)
sqlalchemy.exc.InvalidRequestError: A value is required for bind parameter '%(140719693927088 param)s'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "query.py", line 146, in baked_get
return baked_query.get(ident)
File "site-packages/sqlalchemy/ext/baked.py", line 322, in get
return query._get_impl(ident, self._load_on_ident)
File "site-packages/sqlalchemy/orm/query.py", line 862, in _get_impl
return fallback_fn(self, key)
File "site-packages/sqlalchemy/ext/baked.py", line 365, in _load_on_ident
result = list(bq.for_session(self.session).params(**params))
File "site-packages/sqlalchemy/ext/baked.py", line 254, in __iter__
with_session(self.session)._execute_and_instances(context)
File "site-packages/sqlalchemy/orm/query.py", line 2586, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "site-packages/sqlalchemy/engine/base.py", line 914, in execute
return meth(self, multiparams, params)
File "site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "site-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
compiled_sql, distilled_params
File "site-packages/sqlalchemy/engine/base.py", line 1078, in _execute_context
None, None)
File "site-packages/sqlalchemy/engine/base.py", line 1341, in _handle_dbapi_exception
exc_info
File "site-packages/sqlalchemy/util/compat.py", line 188, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=exc_value)
File "site-packages/sqlalchemy/util/compat.py", line 181, in reraise
raise value.with_traceback(tb)
File "site-packages/sqlalchemy/engine/base.py", line 1073, in _execute_context
context = constructor(dialect, self, conn, *args)
File "site-packages/sqlalchemy/engine/default.py", line 552, in _init_compiled
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/engine/default.py", line 552, in <listcomp>
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/sql/compiler.py", line 476, in construct_params
% bindparam.key)
sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter '%(140719693927088 param)s' [SQL: 'SELECT table.col1 AS table_col1, ..., table.col7 AS table_col7 \nFROM table \nWHERE table.col1 = %(param_1)s AND table.col2 = %(param_2)s'] [parameters: [{'%(140719693926920 param)s': 79228, '%(140719693926640 param)s': 90033}]]
And similarly in:
Traceback (most recent call last):
File "site-packages/sqlalchemy/engine/base.py", line 1073, in _execute_context
context = constructor(dialect, self, conn, *args)
File "site-packages/sqlalchemy/engine/default.py", line 552, in _init_compiled
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/engine/default.py", line 552, in <listcomp>
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/sql/compiler.py", line 476, in construct_params
% bindparam.key)
sqlalchemy.exc.InvalidRequestError: A value is required for bind parameter '%(139926623193184 param)s'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "template.py", line 202, in template
tabl1_obj = obj.tabl1_relation
File "site-packages/sqlalchemy/orm/attributes.py", line 237, in __get__
return self.impl.get(instance_state(instance), dict_)
File "site-packages/sqlalchemy/orm/attributes.py", line 583, in get
value = self.callable_(state, passive)
File "site-packages/sqlalchemy/orm/strategies.py", line 532, in _load_for_state
return self._emit_lazyload(session, state, ident_key, passive)
File "site-packages/sqlalchemy/ext/baked.py", line 450, in _emit_lazyload
session.query(self.mapper), ident_key)
File "site-packages/sqlalchemy/ext/baked.py", line 365, in _load_on_ident
result = list(bq.for_session(self.session).params(**params))
File "site-packages/sqlalchemy/ext/baked.py", line 254, in __iter__
with_session(self.session)._execute_and_instances(context)
File "site-packages/sqlalchemy/orm/query.py", line 2586, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "site-packages/sqlalchemy/engine/base.py", line 914, in execute
return meth(self, multiparams, params)
File "site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "site-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement
compiled_sql, distilled_params
File "site-packages/sqlalchemy/engine/base.py", line 1078, in _execute_context
None, None)
File "site-packages/sqlalchemy/engine/base.py", line 1341, in _handle_dbapi_exception
exc_info
File "site-packages/sqlalchemy/util/compat.py", line 188, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=exc_value)
File "site-packages/sqlalchemy/util/compat.py", line 181, in reraise
raise value.with_traceback(tb)
File "site-packages/sqlalchemy/engine/base.py", line 1073, in _execute_context
context = constructor(dialect, self, conn, *args)
File "site-packages/sqlalchemy/engine/default.py", line 552, in _init_compiled
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/engine/default.py", line 552, in <listcomp>
grp, m in enumerate(parameters)]
File "site-packages/sqlalchemy/sql/compiler.py", line 476, in construct_params
% bindparam.key)
sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter '%(139926623193184 param)s' [SQL: 'SELECT table1.col1 AS table1_col1, ..., table1.col20 AS table1_col20 \nFROM table1 \nWHERE table1.id = %(param_1)s'] [parameters: [{'%(139926623194696 param)s': 86317}]]
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingsqlalchemy.extextension modules, most of which are ORM relatedextension modules, most of which are ORM related