sqlalchemy-tickets Mailing List for SQLAlchemy (Page 38)
Brought to you by:
zzzeek
You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
(174) |
Apr
(50) |
May
(71) |
Jun
(129) |
Jul
(113) |
Aug
(141) |
Sep
(82) |
Oct
(142) |
Nov
(97) |
Dec
(72) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(159) |
Feb
(213) |
Mar
(156) |
Apr
(151) |
May
(58) |
Jun
(166) |
Jul
(296) |
Aug
(198) |
Sep
(89) |
Oct
(133) |
Nov
(150) |
Dec
(122) |
| 2008 |
Jan
(144) |
Feb
(65) |
Mar
(71) |
Apr
(69) |
May
(143) |
Jun
(111) |
Jul
(113) |
Aug
(159) |
Sep
(81) |
Oct
(135) |
Nov
(107) |
Dec
(200) |
| 2009 |
Jan
(168) |
Feb
(109) |
Mar
(141) |
Apr
(128) |
May
(119) |
Jun
(132) |
Jul
(136) |
Aug
(154) |
Sep
(151) |
Oct
(181) |
Nov
(223) |
Dec
(169) |
| 2010 |
Jan
(103) |
Feb
(209) |
Mar
(201) |
Apr
(183) |
May
(134) |
Jun
(113) |
Jul
(110) |
Aug
(159) |
Sep
(138) |
Oct
(96) |
Nov
(116) |
Dec
(94) |
| 2011 |
Jan
(97) |
Feb
(188) |
Mar
(157) |
Apr
(158) |
May
(118) |
Jun
(102) |
Jul
(137) |
Aug
(113) |
Sep
(104) |
Oct
(108) |
Nov
(91) |
Dec
(162) |
| 2012 |
Jan
(189) |
Feb
(136) |
Mar
(153) |
Apr
(142) |
May
(90) |
Jun
(141) |
Jul
(67) |
Aug
(77) |
Sep
(113) |
Oct
(68) |
Nov
(101) |
Dec
(122) |
| 2013 |
Jan
(60) |
Feb
(77) |
Mar
(77) |
Apr
(129) |
May
(189) |
Jun
(155) |
Jul
(106) |
Aug
(123) |
Sep
(53) |
Oct
(142) |
Nov
(78) |
Dec
(102) |
| 2014 |
Jan
(143) |
Feb
(93) |
Mar
(35) |
Apr
(26) |
May
(27) |
Jun
(41) |
Jul
(45) |
Aug
(27) |
Sep
(37) |
Oct
(24) |
Nov
(22) |
Dec
(20) |
| 2015 |
Jan
(17) |
Feb
(15) |
Mar
(34) |
Apr
(55) |
May
(33) |
Jun
(31) |
Jul
(27) |
Aug
(17) |
Sep
(22) |
Oct
(26) |
Nov
(27) |
Dec
(22) |
| 2016 |
Jan
(20) |
Feb
(24) |
Mar
(23) |
Apr
(13) |
May
(17) |
Jun
(14) |
Jul
(31) |
Aug
(23) |
Sep
(24) |
Oct
(31) |
Nov
(23) |
Dec
(16) |
| 2017 |
Jan
(24) |
Feb
(20) |
Mar
(27) |
Apr
(24) |
May
(28) |
Jun
(18) |
Jul
(18) |
Aug
(23) |
Sep
(30) |
Oct
(17) |
Nov
(12) |
Dec
(12) |
| 2018 |
Jan
(27) |
Feb
(23) |
Mar
(13) |
Apr
(19) |
May
(21) |
Jun
(29) |
Jul
(11) |
Aug
(22) |
Sep
(14) |
Oct
(9) |
Nov
(24) |
Dec
|
|
From: Mike B. <iss...@bi...> - 2015-05-01 02:18:52
|
New issue 3407: pypy teardown failures https://bitbucket.org/zzzeek/sqlalchemy/issue/3407/pypy-teardown-failures Mike Bayer: these may all be from test_baked not cleaning up connections ``` #! _ ERROR at teardown of ResultTest_postgresql_psycopg2cffi.test_w_new_entities __ [gw0] linux2 -- Python 2.7.8 /var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/bin/python Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/testing/fixtures.py", line 273, in teardown_class cls._teardown_once_metadata_bind() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/testing/fixtures.py", line 155, in _teardown_once_metadata_bind drop_all_tables(cls.metadata, cls.bind) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/testing/engines.py", line 108, in drop_all_tables metadata.drop_all(bind) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/sql/schema.py", line 3641, in drop_all tables=tables) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 1850, in _run_visitor with self._optional_conn_ctx_manager(connection) as conn: File "/opt/pypy-python2.7/lib-python/2.7/contextlib.py", line 17, in __enter__ return self.gen.next() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 1843, in _optional_conn_ctx_manager with self.contextual_connect() as conn: File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2034, in contextual_connect self._wrap_pool_connect(self.pool.connect, None), File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2069, in _wrap_pool_connect return fn() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 376, in connect return _ConnectionFairy._checkout(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 708, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 480, in checkout rec = pool._do_get() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 1042, in _do_get (self.size(), self.overflow(), self._timeout)) TimeoutError: QueuePool limit of size 5 overflow 0 reached, connection timed out, timeout 0 --------------------------- Captured stdout teardown --------------------------- 2015-05-01 01:44:56,618 ERROR sqlalchemy.pool.QueuePool Exception during reset or similar Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 631, in _finalize_fairy fairy._reset(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 765, in _reset pool._dialect.do_rollback(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/default.py", line 412, in do_rollback dbapi_connection.rollback() File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/connection.py", line 42, in check_closed_ raise exceptions.InterfaceError('connection already closed') InterfaceError: connection already closed 2015-05-01 01:44:56,619 ERROR sqlalchemy.pool.QueuePool Exception during reset or similar Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 631, in _finalize_fairy fairy._reset(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 765, in _reset pool._dialect.do_rollback(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/default.py", line 412, in do_rollback dbapi_connection.rollback() File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/connection.py", line 42, in check_closed_ raise exceptions.InterfaceError('connection already closed') InterfaceError: connection already closed 2015-05-01 01:44:56,620 ERROR sqlalchemy.pool.QueuePool Exception during reset or similar Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 631, in _finalize_fairy fairy._reset(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 765, in _reset pool._dialect.do_rollback(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/default.py", line 412, in do_rollback dbapi_connection.rollback() File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/connection.py", line 42, in check_closed_ raise exceptions.InterfaceError('connection already closed') InterfaceError: connection already closed 2015-05-01 01:44:56,621 ERROR sqlalchemy.pool.QueuePool Exception during reset or similar Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 631, in _finalize_fairy fairy._reset(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 765, in _reset pool._dialect.do_rollback(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/default.py", line 412, in do_rollback dbapi_connection.rollback() File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/connection.py", line 42, in check_closed_ raise exceptions.InterfaceError('connection already closed') InterfaceError: connection already closed 2015-05-01 01:44:56,621 ERROR sqlalchemy.pool.QueuePool Exception during reset or similar Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 631, in _finalize_fairy fairy._reset(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 765, in _reset pool._dialect.do_rollback(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/default.py", line 412, in do_rollback dbapi_connection.rollback() File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/connection.py", line 42, in check_closed_ raise exceptions.InterfaceError('connection already closed') InterfaceError: connection already closed =================================== FAILURES =================================== ________ ResultTest_postgresql_psycopg2cffi.test_spoiled_half_w_params _________ [gw0] linux2 -- Python 2.7.8 /var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/bin/python Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/test/ext/test_baked.py", line 341, in test_spoiled_half_w_params bq.spoil().add_criteria(fn3)(sess).params(id=7).all(), File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/ext/baked.py", line 295, in all return list(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/ext/baked.py", line 241, in __iter__ return iter(self._as_query()) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2515, in __iter__ return self._execute_and_instances(context) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2528, in _execute_and_instances close_with_result=True) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2519, in _connection_from_session **kw) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 882, in connection execution_options=execution_options) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 887, in _connection_for_bind engine, execution_options) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 334, in _connection_for_bind conn = bind.contextual_connect() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2034, in contextual_connect self._wrap_pool_connect(self.pool.connect, None), File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2069, in _wrap_pool_connect return fn() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 376, in connect return _ConnectionFairy._checkout(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 708, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 480, in checkout rec = pool._do_get() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 1042, in _do_get (self.size(), self.overflow(), self._timeout)) TimeoutError: QueuePool limit of size 5 overflow 0 reached, connection timed out, timeout 0 ________ ResultTest_postgresql_psycopg2cffi.test_subquery_eagerloading _________ [gw0] linux2 -- Python 2.7.8 /var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/bin/python Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/test/ext/test_baked.py", line 527, in test_subquery_eagerloading self.assert_sql_count(testing.db, go, 2) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/testing/assertions.py", line 466, in assert_sql_count db, callable_, assertsql.CountStatements(count)) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/testing/assertions.py", line 447, in assert_sql_execution callable_() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/test/ext/test_baked.py", line 525, in go result = bq(sess).all() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/ext/baked.py", line 295, in all return list(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/ext/baked.py", line 257, in __iter__ with_session(self.session)._execute_and_instances(context) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2528, in _execute_and_instances close_with_result=True) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2519, in _connection_from_session **kw) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 882, in connection execution_options=execution_options) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 887, in _connection_for_bind engine, execution_options) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 334, in _connection_for_bind conn = bind.contextual_connect() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2034, in contextual_connect self._wrap_pool_connect(self.pool.connect, None), File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2069, in _wrap_pool_connect return fn() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 376, in connect return _ConnectionFairy._checkout(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 708, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 480, in checkout rec = pool._do_get() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 1042, in _do_get (self.size(), self.overflow(), self._timeout)) TimeoutError: QueuePool limit of size 5 overflow 0 reached, connection timed out, timeout 0 ____________ ResultTest_postgresql_psycopg2cffi.test_w_new_entities ____________ [gw0] linux2 -- Python 2.7.8 /var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/bin/python Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/test/ext/test_baked.py", line 368, in test_w_new_entities bq(session).all(), File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/ext/baked.py", line 295, in all return list(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/ext/baked.py", line 257, in __iter__ with_session(self.session)._execute_and_instances(context) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2528, in _execute_and_instances close_with_result=True) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/query.py", line 2519, in _connection_from_session **kw) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 882, in connection execution_options=execution_options) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 887, in _connection_for_bind engine, execution_options) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 334, in _connection_for_bind conn = bind.contextual_connect() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2034, in contextual_connect self._wrap_pool_connect(self.pool.connect, None), File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 2069, in _wrap_pool_connect return fn() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 376, in connect return _ConnectionFairy._checkout(self) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 708, in _checkout fairy = _ConnectionRecord.checkout(pool) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 480, in checkout rec = pool._do_get() File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/pool.py", line 1042, in _do_get (self.size(), self.overflow(), self._timeout)) TimeoutError: QueuePool limit of size 5 overflow 0 reached, connection timed out, timeout 0 _________ ExecutionTest_postgresql_psycopg2cffi.test_parameter_execute _________ [gw0] linux2 -- Python 2.7.8 /var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/bin/python Traceback (most recent call last): File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/test/orm/test_session.py", line 61, in test_parameter_execute {"id": 8, "name": "u8"} File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/orm/session.py", line 1023, in execute bind, close_with_result=True).execute(clause, params or {}) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 914, in execute return meth(self, multiparams, params) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement compiled_sql, distilled_params File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context context) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 1339, in _handle_dbapi_exception exc_info File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause reraise(type(exception), exception, tb=exc_tb) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/base.py", line 1116, in _execute_context context) File "/var/jenkins/workspace/sqlalchemy-default-sqlite-pypy-2.7/.tox/full/site-packages/sqlalchemy/engine/default.py", line 439, in do_executemany cursor.executemany(statement, parameters) File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 26, in check_closed_ return func(self, *args, **kwargs) File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 49, in check_async_ return func(self, *args, **kwargs) File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 286, in executemany self.execute(query, params) File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 26, in check_closed_ return func(self, *args, **kwargs) File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 259, in execute self._pq_execute(self._query, conn._async) File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 692, in _pq_execute self._pq_fetch() File "/opt/pypy-python2.7/site-packages/psycopg2cffi/_impl/cursor.py", line 753, in _pq_fetch raise self._conn._create_exception(cursor=self) IntegrityError: (psycopg2cffi._impl.exceptions.IntegrityError) duplicate key value violates unique constraint "users_pkey" DETAIL: Key (id)=(7) already exists. [SQL: u'INSERT INTO users (id, name) VALUES (%(id)s, %(name)s)'] [parameters: ({'id': 7, 'name': 'u7'}, {'id': 8, 'name': 'u8'})] ``` |
|
From: Mike B. <iss...@bi...> - 2015-05-01 02:13:11
|
New issue 3406: import in plugin_base doesn't work on pypy https://bitbucket.org/zzzeek/sqlalchemy/issue/3406/import-in-plugin_base-doesnt-work-on-pypy Mike Bayer: ``` #!python try: # unitttest has a SkipTest also but pytest doesn't # honor it unless nose is imported too... from nose import SkipTest except ImportError: from _pytest.runner import Skipped as SkipTest ``` the _pytest thing doesn't work: ``` #! >>>> from _pytest.runner import Skipped as SkipTest Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/src/pypy-2.5.1-osx64/site-packages/_pytest/runner.py", line 7, in <module> import pytest File "/usr/local/src/pypy-2.5.1-osx64/site-packages/pytest.py", line 17, in <module> _preloadplugins() # to populate pytest.* namespace so help(pytest) works File "/usr/local/src/pypy-2.5.1-osx64/site-packages/_pytest/config.py", line 58, in _preloadplugins _preinit.append(get_plugin_manager()) File "/usr/local/src/pypy-2.5.1-osx64/site-packages/_pytest/config.py", line 67, in get_plugin_manager pluginmanager.import_plugin(spec) File "/usr/local/src/pypy-2.5.1-osx64/site-packages/_pytest/core.py", line 318, in import_plugin mod = importplugin(modname) File "/usr/local/src/pypy-2.5.1-osx64/site-packages/_pytest/core.py", line 370, in importplugin __import__(importspec) ImportError: No module named main ``` this then causes pypy setup.py test to fail: ``` #! Traceback (most recent call last): File "<builtin>/app_main.py", line 75, in run_toplevel File "setup.py", line 154, in <module> run_setup(False) File "setup.py", line 150, in run_setup **kwargs File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/distutils/core.py", line 151, in setup dist.run_commands() File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/distutils/dist.py", line 953, in run_commands self.run_command(cmd) File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/distutils/dist.py", line 972, in run_command cmd_obj.run() File "/usr/local/src/pypy-2.5.1-osx64/site-packages/setuptools/command/test.py", line 142, in run self.with_project_on_sys_path(self.run_tests) File "/usr/local/src/pypy-2.5.1-osx64/site-packages/setuptools/command/test.py", line 122, in with_project_on_sys_path func() File "/usr/local/src/pypy-2.5.1-osx64/site-packages/setuptools/command/test.py", line 163, in run_tests testRunner=self._resolve_as_ep(self.test_runner), File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/unittest/main.py", line 94, in __init__ self.parseArgs(argv) File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/unittest/main.py", line 149, in parseArgs self.createTests() File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/unittest/main.py", line 158, in createTests self.module) File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/unittest/loader.py", line 130, in loadTestsFromNames suites = [self.loadTestsFromName(name, module) for name in names] File "/usr/local/src/pypy-2.5.1-osx64/lib-python/2.7/unittest/loader.py", line 100, in loadTestsFromName parent, obj = obj, getattr(obj, part) AttributeError: 'module' object has no attribute 'testing' ``` we need to look at current pytest and see if there's a SkipTest we can use that doesn't require the weird import here |
|
From: Mike B. <iss...@bi...> - 2015-05-01 01:18:49
|
New issue 3405: query.update check, warning in 0.9 execption in 1.0, incorrect for pypy https://bitbucket.org/zzzeek/sqlalchemy/issue/3405/queryupdate-check-warning-in-09-execption Mike Bayer: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class A(Base): __tablename__ = 'a' id = Column(Integer, primary_key=True) data = Column(String) e = create_engine("sqlite://", echo=True) Base.metadata.create_all(e) s = Session(e) s.query(A).update({"data": "foo"}) ``` run w/ pypy: ``` #! Traceback (most recent call last): File "app_main.py", line 75, in run_toplevel File "test.py", line 19, in <module> s.query(A).update({"data": "foo"}) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/query.py", line 2939, in update self, synchronize_session, values, update_args) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 1183, in factory }, synchronize_session, query, values, update_kwargs) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 1069, in _factory return klass(*arg) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 1173, in __init__ super(BulkUpdate, self).__init__(query) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 1034, in __init__ self._validate_query_state() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 1052, in _validate_query_state (methname, ) InvalidRequestError: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called ``` because we are testing `() is ()`, bzzt |
|
From: Charles C. <iss...@bi...> - 2015-04-30 20:43:16
|
New issue 3404: Copy To CSV Expression https://bitbucket.org/zzzeek/sqlalchemy/issue/3404/copy-to-csv-expression Charles Cloud: I've written some code [here](https://github.com/ContinuumIO/odo/pull/174/files) for the odo project. I was wondering if there's any interest in having this kind of functionality in sqlalchemy. Maybe something like ```python sa.Table(...).copy_to('filename.csv', **options) ``` |
|
From: Mike B. <iss...@bi...> - 2015-04-30 16:04:51
|
New issue 3403: 1.0 regression re: column_descriptions w/ CTE https://bitbucket.org/zzzeek/sqlalchemy/issue/3403/10-regression-re-column_descriptions-w-cte Mike Bayer: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import aliased Base = declarative_base() class Part(Base): __tablename__ = 'part' part = Column(String, primary_key=True) sub_part = Column(String, primary_key=True) quantity = Column(Integer) e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) Base.metadata.create_all(e) session = Session(e) included_parts = session.query( Part.sub_part, Part.part, Part.quantity).\ filter(Part.part=="our part").\ cte(name="included_parts", recursive=True) incl_alias = aliased(included_parts, name="pr") parts_alias = aliased(Part, name="p") included_parts = included_parts.union_all( session.query( parts_alias.sub_part, parts_alias.part, parts_alias.quantity).\ filter(parts_alias.part==incl_alias.c.sub_part) ) q = session.query(included_parts) print q.column_descriptions ``` ``` #! Traceback (most recent call last): File "test.py", line 40, in <module> print q.column_descriptions File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/query.py", line 2582, in column_descriptions for ent in self._entities AttributeError: 'CTE' object has no attribute 'entity' ``` |
|
From: Mike B. <iss...@bi...> - 2015-04-29 13:41:14
|
New issue 3402: new stack trace when combining non-eq compare_values w/ SQL expression in ORM persist https://bitbucket.org/zzzeek/sqlalchemy/issue/3402/new-stack-trace-when-combining-non-eq Mike Bayer: this is a 1.0 regression, though I'm pretty curious to see what 0.9 is doing that it isn't hitting this exception: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() def comparator(a, b): return a > b class A(Base): __tablename__ = 'a' id = Column(Integer, primary_key=True) data = Column(PickleType(comparator=comparator)) e = create_engine("sqlite://", echo=True) Base.metadata.create_all(e) s = Session(e) s.add(A(data='some data')) s.commit() a1 = s.query(A).first() a1.data = func.foo("im a SQL expression") s.commit() ``` ``` #! Traceback (most recent call last): File "test.py", line 27, in <module> s.commit() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 790, in commit self.transaction.commit() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 392, in commit self._prepare_impl() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 372, in _prepare_impl self.session.flush() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 2004, in flush self._flush(objects) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 2122, in _flush transaction.rollback(_capture_exception=True) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/util/langhelpers.py", line 60, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 2086, in _flush flush_context.execute() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/unitofwork.py", line 373, in execute rec.execute(self) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/unitofwork.py", line 532, in execute uow File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 170, in save_obj mapper, table, update) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 613, in _emit_update_statements lambda rec: ( File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 456, in _collect_update_commands value, state.committed_state[propkey]): File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 2726, in __bool__ raise TypeError("Boolean value of this clause is not defined") TypeError: Boolean value of this clause is not defined ``` |
|
From: Mike B. <iss...@bi...> - 2015-04-29 04:19:35
|
New issue 3401: get eager_defaults to use RETURNING for ad-hoc SQL, not just column defaults https://bitbucket.org/zzzeek/sqlalchemy/issue/3401/get-eager_defaults-to-use-returning-for-ad Mike Bayer: this might take some rearrangement of persistence logic to work out, but this should work: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class A(Base): __tablename__ = 'a' id = Column(Integer, primary_key=True) value = Column(Integer) #, server_default=FetchedValue()) __mapper_args__ = {'eager_defaults': True} e = create_engine("postgresql://scott:tiger@localhost/test", echo=True) Base.metadata.create_all(e) s = Session(e) a1 = A(value=literal_column("1 + 1")) s.add(a1) s.flush() # does a fetch, unless the server_default above is set. print a1.value ``` also eager_defaults should have a section in the mapper docs describing it beyond just the docstring, now that returning makes it useful. |
|
From: Sam Z. <iss...@bi...> - 2015-04-29 02:07:04
|
New issue 3400: Exception occurred during documentation build (`make dist-html`) https://bitbucket.org/zzzeek/sqlalchemy/issue/3400/exception-occurred-during-documentation Sam Zhang: Traceback: ``` #!error reading sources... [ 61%] orm/events reading sources... [ 62%] orm/examples The name of the builder is: htmlThe name of the builder is: html Exception occurred: File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/zzzeeksphinx/viewsource.py", line 61, in _view_source_node tok, [pathname] if pathname else None) ImportError: No module named The full traceback has been saved in /tmp/sphinx-err-qz9ZgL.log /t/sphinx-err-qz9ZgL.log # Sphinx version: 1.3.1 # Python version: 2.7.6 (CPython) # Docutils version: 0.12 release # Jinja2 version: 2.7.3 # Last messages: # reading sources... [ 57%] orm/classical # reading sources... [ 57%] orm/collections # reading sources... [ 58%] orm/composites # reading sources... [ 59%] orm/constructors # reading sources... [ 60%] orm/contextual # reading sources... [ 61%] orm/deprecated # reading sources... [ 61%] orm/events # reading sources... [ 62%] orm/examples # The name of the builder is: html # The name of the builder is: html # Loaded extensions: # sphinx.ext.autodoc (1.3.1) from /mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/ext/autodoc.pyc # sphinx.ext.intersphinx (1.3.1) from /mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/ext/intersphinx.pyc # changelog (unknown version) from /mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/changelog/__init__.pyc # alabaster (0.7.3) from /mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/alabaster/__init__.pyc # sphinx_paramlinks (unknown version) from /mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx_paramlinks/__init__.pyc # zzzeeksphinx (unknown version) from /mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/zzzeeksphinx/__init__.pyc Traceback (most recent call last): File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/cmdline.py", line 245, in main app.build(opts.force_all, filenames) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/application.py", line 264, in build self.builder.build_update() File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/builders/__init__.py", line 245, in build_update 'out of date' % len(to_build)) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/builders/__init__.py", line 259, in build self.doctreedir, self.app)) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/environment.py", line 618, in update self._read_serial(docnames, app) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/environment.py", line 638, in _read_serial self.read_doc(docname, app) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/environment.py", line 791, in read_doc pub.publish() File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/core.py", line 217, in publish self.settings) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/environment.py", line 126, in read self.parse() File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/readers/__init__.py", line 78, in parse self.parser.parse(self.input, document) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/__init__.py", line 172, in parse self.statemachine.run(inputlines, document, inliner=self.inliner) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 170, in run input_source=document['source']) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 239, in run context, state, transitions) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 460, in check_line return method(match, context, next_state) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2961, in text self.section(title.lstrip(), source, style, lineno + 1, messages) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 327, in section self.new_subsection(title, lineno, messages) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection node=section_node, match_titles=True) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse node=node, match_titles=match_titles) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 195, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 239, in run context, state, transitions) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 460, in check_line return method(match, context, next_state) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2726, in underline self.section(title, source, style, lineno - 1, messages) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 327, in section self.new_subsection(title, lineno, messages) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection node=section_node, match_titles=True) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse node=node, match_titles=match_titles) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 195, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 239, in run context, state, transitions) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 460, in check_line return method(match, context, next_state) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2726, in underline self.section(title, source, style, lineno - 1, messages) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 327, in section self.new_subsection(title, lineno, messages) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 395, in new_subsection node=section_node, match_titles=True) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse node=node, match_titles=match_titles) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 195, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 239, in run context, state, transitions) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 460, in check_line return method(match, context, next_state) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2299, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2311, in explicit_construct return method(self, expmatch) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2054, in directive directive_class, match, type_name, option_presets) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2103, in run_directive result = directive_instance.run() File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 1488, in run nested_parse_with_titles(self.state, self.result, node) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/sphinx/util/nodes.py", line 165, in nested_parse_with_titles return state.nested_parse(content, 0, node, match_titles=1) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 282, in nested_parse node=node, match_titles=match_titles) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 195, in run results = StateMachineWS.run(self, input_lines, input_offset) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 239, in run context, state, transitions) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/statemachine.py", line 460, in check_line return method(match, context, next_state) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2299, in explicit_markup nodelist, blank_finish = self.explicit_construct(match) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2311, in explicit_construct return method(self, expmatch) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2054, in directive directive_class, match, type_name, option_presets) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/docutils/parsers/rst/states.py", line 2103, in run_directive result = directive_instance.run() File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/zzzeeksphinx/viewsource.py", line 200, in run link = _view_source_node(env, modname, self.state) File "/mnt/open-source/sqlalchemy/.venv/local/lib/python2.7/site-packages/zzzeeksphinx/viewsource.py", line 61, in _view_source_node tok, [pathname] if pathname else None) ImportError: No module named ``` |
|
From: Sam Z. <iss...@bi...> - 2015-04-29 02:04:11
|
New issue 3399: Sphinx missing in doc/build/requirements.txt https://bitbucket.org/zzzeek/sqlalchemy/issue/3399/sphinx-missing-in-doc-build Sam Zhang: The doc/build/requirements.txt file does not contain sphinx. This causes `make` to call the system `sphinx-build` instead, if it was previously globally installed. Then `zzzeeksphinx` is not found because it ran outside of the virtualenv. |
|
From: Sam Z. <iss...@bi...> - 2015-04-29 02:00:59
|
New issue 3398: Make explicit primary key requirement in docs for automap table reflection https://bitbucket.org/zzzeek/sqlalchemy/issue/3398/make-explicit-primary-key-requirement-in Sam Zhang: The FAQ/ORM section makes clear that a primary key is required for a table to be mapped: http://docs.sqlalchemy.org/en/latest/faq/ormconfiguration.html#how-do-i-map-a-table-that-has-no-primary-key. However this was unclear from the automap documentation, as can be seen in the following StackOverflow questions: http://stackoverflow.com/questions/23765681/sqlalchemy-automap-does-not-create-class-for-tables-without-primary-key http://stackoverflow.com/questions/29905160/automap-reflect-tables-within-a-postgres-schema-with-sqlalchemy (me) and on the mailing list: https://groups.google.com/forum/#!topic/sqlalchemy/8F2tPkpR4bE |
|
From: Mike B. <iss...@bi...> - 2015-04-28 23:17:59
|
New issue 3397: association proxy any() on o2m->non object scalar https://bitbucket.org/zzzeek/sqlalchemy/issue/3397/association-proxy-any-on-o2m-non-object Mike Bayer: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.associationproxy import association_proxy Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) _all_emails = relationship('UserEmail') all_emails = association_proxy('_all_emails', 'email') class UserEmail(Base): __tablename__ = 'user_emails' id = Column(Integer, primary_key=True) user_id = Column(Integer, ForeignKey('users.id')) email = Column(String, nullable=False, index=True) s = Session() print s.query(User).filter(User.all_emails.any(UserEmail.email.like('foo'))) #print s.query(User).filter(User._all_emails.any(UserEmail.email == 'foo')) ``` ``` #! File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/ext/associationproxy.py", line 233, in _value_is_scalar mapper.get_property(self.value_attr).uselist File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/util/langhelpers.py", line 843, in __getattr__ return self._fallback_getattr(key) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/util/langhelpers.py", line 821, in _fallback_getattr raise AttributeError(key) AttributeError: uselist ``` |
|
From: Chung W. <iss...@bi...> - 2015-04-28 19:11:10
|
New issue 3396: SQLCompiler's _truncated_identifier method may create truncated names that collide with untruncated names https://bitbucket.org/zzzeek/sqlalchemy/issue/3396/sqlcompilers-_truncated_identifier-method Chung Wu: Where `label_length` is 63, and current `counter` value is 12, the if I have a name that is 64 characters long, the truncated name will be the first 57 characters plus "c" (which is `hex(12)[2:]`). This would collide with a name that is 58 characters with the same 57-character prefix and ends in "c". A possible fix is to truncate all names that are longer than `label_length - 6`, instead of just those that are longer than `label_length`. |
|
From: robert h. <iss...@bi...> - 2015-04-28 02:10:21
|
New issue 3395: celery use sqlalchemy is error https://bitbucket.org/zzzeek/sqlalchemy/issue/3395/celery-use-sqlalchemy-is-error robert huang: ``` #!python Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/celery/app/trace.py", line 283, in trace_task uuid, retval, SUCCESS, request=task_request, File "/usr/local/lib/python2.7/site-packages/celery/backends/base.py", line 256, in store_result request=request, **kwargs) File "/usr/local/lib/python2.7/site-packages/celery/backends/database/__init__.py", line 63, in _inner return fun(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/celery/backends/database/__init__.py", line 118, in _store_result session = self.ResultSession() File "/usr/local/lib/python2.7/site-packages/celery/backends/database/__init__.py", line 111, in ResultSession **self.engine_options File "/usr/local/lib/python2.7/site-packages/celery/backends/database/session.py", line 60, in session_factory engine, session = self.create_session(dburi, **kwargs) File "/usr/local/lib/python2.7/site-packages/celery/backends/database/session.py", line 46, in create_session engine = self.get_engine(dburi, **kwargs) File "/usr/local/lib/python2.7/site-packages/celery/backends/database/session.py", line 43, in get_engine return create_engine(dburi, **kwargs) File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine return strategy.create(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 74, in create dbapi = dialect_cls.dbapi(**dbapi_args) File "/usr/local/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 92, in dbapi return __import__('MySQLdb') ImportError: No module named MySQLdb ``` i sure my python install MySQL-python and i in python shell can import MySQLdb |
|
From: Mike B. <iss...@bi...> - 2015-04-27 21:56:08
|
New issue 3394: deprecate order_by parameter on mapper https://bitbucket.org/zzzeek/sqlalchemy/issue/3394/deprecate-order_by-parameter-on-mapper Mike Bayer: This is a little used parameter with very little impact on current code, however as per #3223 there are edge cases that are not worth supporting. Deprecation here would likely be indefinite but new or currently unworking use cases would remain unsupported. |
|
From: jvanasco <iss...@bi...> - 2015-04-27 21:05:18
|
New issue 3393: feature idea - relationship aliases https://bitbucket.org/zzzeek/sqlalchemy/issue/3393/feature-idea-relationship-aliases jvanasco: (I'm not sure the best venue for this suggestion. If it's the mailinglist or other.) While auditing my code, I realized that it can be tricky to understand what it going on in a relationship, as much functionality is controlled by kwargs. Would it possibly be useful to newcomers if there were aliases for relationship and backref? basically the idea would be something like: sqlalchemy.orm.relationships.one_2_many sqlalchemy.orm.relationships.one_2_one this way, usage of "uselist=False" doesn't get obscured in a list of kwargs |
|
From: Luke M. <iss...@bi...> - 2015-04-27 19:27:58
|
New issue 3392: Regression with 1.0+ https://bitbucket.org/zzzeek/sqlalchemy/issue/3392/regression-with-10 Luke Macken: Hello, I'm currently hitting a regression with 1.0.0+. https://github.com/fedora-infra/bodhi/blob/develop/bodhi/views/generic.py#L36-L56 ``` #!python ProgrammingError: (psycopg2.ProgrammingError) syntax error at or near "desc" LINE 2: ...(users.id = comments.user_id) AS count_1, count_1 desc AS an... ^ [SQL: 'SELECT anon_1.users_id AS anon_1_users_id, anon_1.users_name AS anon_1_users_name, anon_1.count_1 AS anon_1_count_1, anon_1.anon_2 AS anon_1_anon_2, re leases_1.id AS releases_1_id, releases_1.name AS releases_1_name, releases_1.long_name AS releases_1_long_name, releases_1.version AS releases_1_version, relea ses_1.id_prefix AS releases_1_id_prefix, releases_1.branch AS releases_1_branch, releases_1.dist_tag AS releases_1_dist_tag, releases_1.stable_tag AS releases_ 1_stable_tag, releases_1.testing_tag AS releases_1_testing_tag, releases_1.candidate_tag AS releases_1_candidate_tag, releases_1.pending_testing_tag AS release s_1_pending_testing_tag, releases_1.pending_stable_tag AS releases_1_pending_stable_tag, releases_1.override_tag AS releases_1_override_tag, releases_1.state A S releases_1_state, builds_1.id AS builds_1_id, builds_1.nvr AS builds_1_nvr, builds_1.inherited AS builds_1_inherited, builds_1.package_id AS builds_1_package _id, builds_1.release_id AS builds_1_release_id, builds_1.update_id AS builds_1_update_id, packages_1.id AS packages_1_id, packages_1.name AS packages_1_name, packages_1.requirements AS packages_1_requirements, packages_1.stack_id AS packages_1_stack_id, stacks_1.id AS stacks_1_id, stacks_1.name AS stacks_1_name, sta cks_1.description AS stacks_1_description, stacks_1.requirements AS stacks_1_requirements, buildroot_overrides_1.id AS buildroot_overrides_1_id, buildroot_over rides_1.build_id AS buildroot_overrides_1_build_id, buildroot_overrides_1.submitter_id AS buildroot_overrides_1_submitter_id, buildroot_overrides_1.notes AS bu ildroot_overrides_1_notes, buildroot_overrides_1.submission_date AS buildroot_overrides_1_submission_date, buildroot_overrides_1.expiration_date AS buildroot_o verrides_1_expiration_date, buildroot_overrides_1.expired_date AS buildroot_overrides_1_expired_date \nFROM (SELECT users.id AS users_id, users.name AS users_n ame, count(users.id = comments.user_id) AS count_1, count_1 desc AS anon_2 \nFROM users JOIN comments ON users.id = comments.user_id \nWHERE comments.timestamp > %(timestamp_1)s AND users.name != %(name_1)s AND users.name != %(name_2)s GROUP BY users.id, users.name ORDER BY count_1 desc \n LIMIT %(param_1)s) AS anon_ 1 LEFT OUTER JOIN buildroot_overrides AS buildroot_overrides_1 ON anon_1.users_id = buildroot_overrides_1.submitter_id LEFT OUTER JOIN builds AS builds_1 ON bu ilds_1.id = buildroot_overrides_1.build_id LEFT OUTER JOIN releases AS releases_1 ON releases_1.id = builds_1.release_id LEFT OUTER JOIN packages AS packages_1 ON packages_1.id = builds_1.package_id LEFT OUTER JOIN stacks AS stacks_1 ON stacks_1.id = packages_1.stack_id ORDER BY anon_1.anon_2'] [parameters: {'name_2' : 'autoqa', 'name_1': 'bodhi', 'param_1': 5, 'timestamp_1': datetime.datetime(2015, 4, 20, 18, 59, 41, 509054)}] ``` |
|
From: Mike B. <iss...@bi...> - 2015-04-27 18:43:46
|
New issue 3391: "tables" collection passed to before/after create events for metadata no longer a list of tables https://bitbucket.org/zzzeek/sqlalchemy/issue/3391/tables-collection-passed-to-before-after Mike Bayer: again due to #3282, the format of the "tables" collection has changed and we aren't converting it back to the previous format nor did we put anything in migration about it. While the documentation doesn't claim a format here, the collection is still key enough that we should probably keep it as it was: ``` #!diff diff --git a/test/engine/test_ddlevents.py b/test/engine/test_ddlevents.py index 1830017..3416b0e 100644 --- a/test/engine/test_ddlevents.py +++ b/test/engine/test_ddlevents.py @@ -19,29 +19,41 @@ class DDLEventTest(fixtures.TestBase): self.state = None self.schema_item = schema_item self.bind = bind + if isinstance(schema_item, MetaData): + self.tables = set(schema_item.tables.values()) + else: + self.tables = None def before_create(self, schema_item, bind, **kw): assert self.state is None assert schema_item is self.schema_item assert bind is self.bind + if self.tables: + eq_(self.tables, set(kw['tables'])) self.state = 'before-create' def after_create(self, schema_item, bind, **kw): assert self.state in ('before-create', 'skipped') assert schema_item is self.schema_item assert bind is self.bind + if self.tables: + eq_(self.tables, set(kw['tables'])) self.state = 'after-create' def before_drop(self, schema_item, bind, **kw): assert self.state is None assert schema_item is self.schema_item assert bind is self.bind + if self.tables: + eq_(self.tables, set(kw['tables'])) self.state = 'before-drop' def after_drop(self, schema_item, bind, **kw): assert self.state in ('before-drop', 'skipped') assert schema_item is self.schema_item assert bind is self.bind + if self.tables: + eq_(self.tables, set(kw['tables'])) self.state = 'after-drop' def setup(self): ``` |
|
From: Mike B. <iss...@bi...> - 2015-04-27 15:12:49
|
New issue 3390: start reworking documentation to refer to "back_populates" in tutorials, examples, etc. https://bitbucket.org/zzzeek/sqlalchemy/issue/3390/start-reworking-documentation-to-refer-to Mike Bayer: we need to start moving away from "backref" as a result of issues like #3389, so basic things like ORM tutorial and such should prefer back_populates, with a mention towards "backref". |
|
From: Marcus C. <iss...@bi...> - 2015-04-27 12:47:01
|
New issue 3389: ORM relationship backref missing unless manually call configure_mappers() https://bitbucket.org/zzzeek/sqlalchemy/issue/3389/orm-relationship-backref-missing-unless Marcus Cobden: This is with SQLAlchemy 1.0.2 ``` #!python import logging from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, ForeignKey, Integer, String from sqlalchemy.orm import relationship, configure_mappers logging.basicConfig(level=logging.DEBUG) Base = declarative_base() class Project(Base): __tablename__ = 'projects' # Internal database ID _id = Column(Integer, primary_key=True) # API id slug = Column(String, unique=True) runs = relationship( 'Run', backref='project', cascade="all, delete-orphan") class Run(Base): __tablename__ = 'runs' _id = Column(Integer, primary_key=True) _project_id = Column(Integer, ForeignKey('projects._id'), nullable=False) number = Column(Integer, unique=True, autoincrement=True) # configure_mappers() print Project.runs # works 'Project.runs' print Run.project # Attribute Error! ``` |
|
From: Mike B. <iss...@bi...> - 2015-04-26 21:19:06
|
New issue 3388: instrument_class event is being called at the wrong time in 1.0 https://bitbucket.org/zzzeek/sqlalchemy/issue/3388/instrument_class-event-is-being-called-at Mike Bayer: this works in 0.9, fails in 1.0. Not really sure how this can be happening since nothing should have changed in this regard: ``` #!python from sqlalchemy import event from sqlalchemy import MetaData, Table, Column, Integer from sqlalchemy.orm import mapper def my_init(self): print("hi") @event.listens_for(mapper, "instrument_class") def instrument_class(mp, class_): print("INSTRUMENT CLASS!") class_.__init__ = my_init m = MetaData() foo = Table('foo', m, Column('id', Integer, primary_key=True)) class Foo(object): pass ``` mapper(Foo, foo) f1 = Foo() assert f1._sa_instance_state |
|
From: jaredks <iss...@bi...> - 2015-04-25 22:23:13
|
New issue 3387: add_entity and before_compile event https://bitbucket.org/zzzeek/sqlalchemy/issue/3387/add_entity-and-before_compile-event jaredks: When adding an entity to a query "before_compile" the query is correctly executed but the row processor(s) used in `orm.loading.instances` still refer to the original query object - specifically the `_entities` list. So if you had say related `User` and `Address` models and some query, ``` #!python q = sess.query(User).filter_by(first_name='John') ``` and a listener, ``` #!python @event.listens_for(SomeQuery, 'before_compile', retval=True) def change_query(query): return query.add_entity(Address).join(Address) ``` You would expect the query to yield `KeyedTuple` but instead `User` entity is used. A potential solution would be to change `Query._execute_and_instances` to return, ``` #!python loading.instances(querycontext.query, result, query context) ``` instead of, ``` #!python loading.instances(self, result, querycontext) ``` But this change may have other side-effects? |
|
From: eirnym <iss...@bi...> - 2015-04-24 15:42:57
|
New issue 3386: Create engine with given dialect object https://bitbucket.org/zzzeek/sqlalchemy/issue/3386/create-engine-with-given-dialect-object eirnym: I want to have same dialect object for different engines (for example, main and mock), so I want to define dialect not only with url string, but also with specifying dialect object. ``` #!python primary_engine = create_engine(connect_url, **other_params) pass # do something here mock_engine = create_engine(primary_engine.dialect, strategy=mock, executor=some_executor) # Or better to have something like this: mock_engine = create_mock_engine(primary_engine.dialect, executor=some_executor') ``` Now I have to care about which dialect I use like this: ``` #!python primary_engine = create_engine(connect_url, **other_params) pass # do something here mock_engine = create_engine('postgres:///', strategy=mock, executor=some_executor) ``` |
|
From: Andrey S. <iss...@bi...> - 2015-04-24 12:55:45
|
New issue 3385: ColumnElement with label() is incorrectly referenced in group_by/order_by producing invalid query https://bitbucket.org/zzzeek/sqlalchemy/issue/3385/columnelement-with-label-is-incorrectly Andrey Semenov: https://gist.github.com/SantjagoCorkez/db207a7b533d1d6f05ae When providing a ColumnElement itself into .group_by()/.order_by() the query compiler does not automatically quote the reference to that producing a query that in some circumstances becomes invalid (for example in case there are columns with the same name as the ColumnElement's label within the query). This became an issue at 1.0.0 (and not resolved in 1.0.1) |
|
From: wenlong_lu <iss...@bi...> - 2015-04-24 08:13:30
|
New issue 3384: how to generate complicated/nested sql statement for postgres upsert/merge https://bitbucket.org/zzzeek/sqlalchemy/issue/3384/how-to-generate-complicated-nested-sql wenlong_lu: I have several large(billions of rows) tables which need upsert operations. I have checked the #960 and #2551, and still did not get what I want. if you think this is duplicated, pls close it. ### upsert idea from PostgreSQL official page I just follow the idea presented on postgres page: http://www.postgresql.org/docs/9.4/static/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING ```pgsql CREATE TABLE db (a INT PRIMARY KEY, b TEXT); CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS $$ BEGIN LOOP -- first try to update the key UPDATE db SET b = data WHERE a = key; IF found THEN RETURN; END IF; -- not there, so try to insert the key -- if someone else inserts the same key concurrently, -- we could get a unique-key failure BEGIN INSERT INTO db(a,b) VALUES (key, data); RETURN; EXCEPTION WHEN unique_violation THEN -- Do nothing, and loop to try the UPDATE again. END; END LOOP; END; $$ LANGUAGE plpgsql; SELECT merge_db(1, 'david'); SELECT merge_db(1, 'dennis') ``` ### Our modified version Since our insert and update statement are dynamic and complex type(jsonb, hstore, etc) involved, We prefer to build sql statements on sqlalchemy side. our pgsql script follows as: ```pgsql -- Function: merge_record(text, text) -- DROP FUNCTION merge_record(text, text); CREATE OR REPLACE FUNCTION merge_record(update_expression text, insert_expression text) RETURNS integer AS $BODY$ declare row_affected integer; BEGIN -- usually loop twice would be ok, here we set max value as 50 times. -- it should be enough FOR i IN 1..50 LOOP -- first try to update the key execute update_expression; GET DIAGNOSTICS row_affected = ROW_COUNT; IF row_affected > 0 THEN RETURN 1; END IF; -- not there, so try to insert the key -- if someone else inserts the same key concurrently, -- we could get a unique-key failure BEGIN execute insert_expression; RETURN 1; EXCEPTION WHEN unique_violation THEN -- Do nothing, and loop to try the UPDATE again. END; END LOOP; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION merge_record(text, text) OWNER TO postgres; ``` ### Target script to be generated SO what i want to build on client side is ```sql select merge_record(update_expression, insert_expression); e.g. select merge_record( 'update target_table set s1="v1", jsonb2={"k1": "v1", "k1": "v2"}, hstore3={"k3"=>"v3", "k4"=>"v4"} where unique_id=45678766', 'insert into target_table (s1, jsonb2, hstore3, unique_id) VALUES("v1", {"k1": "v1", "k1": "v2"}, {"k3"=>"v3", "k4"=>"v4"}, 45678766)' ); ``` ### Problems we encountered WE have used sqlalchemy SQL language expression to build the SQL statements dynamically. BUT the problem is that, values have many special characters, like $, \n etc (some of them are html text, so everything is possible). The exceptions are, that is invalid SQL statements generated, always happen several times per month. ## Reasons for the problems **SO we think we must miss sth**. pls give some suggestion if any. related code follows as: ```python raw_upsert_sql_statement = "select merge_record('%s', '%s')" % (update_expression, insert_expression) conn.execute(text(raw_upsert_sql_statement)) insert_expression dialect = postgresql.dialect() target_table = self.__table__ stmt = target_table.insert().values(attr_value_hash) sql_template = unicode(stmt.compile(dialect=dialect)) attr_value_hash = self._convert_safe_sql_str(attr_value_hash) insert_expression = sql_template % (attr_value_hash) update_expression dialect = postgresql.dialect() stmt = target_table.update().where(eval(self.condition_script)).values(attr_template_hash) sql_template = unicode(stmt.compile(dialect=dialect)) attr_value_hash = self._convert_safe_sql_str(attr_value_hash) update_expression = sql_template % (attr_value_hash) ### this should be the stupid parts def _convert_safe_sql_str(self, params): ret_params = {} log.debug("Before converting: %s" % params) # error:'dict' object does not support indexing # fix: replace("%", "%%") for k, v in params.iteritems(): try: if type(v) in (datetime, str, unicode): ret_params[k] = ('$$%s$$' % v).replace("'", "").replace("%", "%%") elif type(v) in (MutableList, list): ret_params[k] = ('$$%s$$' % v).replace("[", "{").replace("]", "}").replace("u'", "").replace("'", "").replace("%", "%%") elif type(v) == MutableDict: ret_params[k] = ('$$%s$$' % v).replace("{", "").replace("}", "").replace(":", "=>").replace("'", "").replace("%", "%%") elif type(v) == dict: ret_params[k] = ('$$%s$$' % json.dumps(v)).replace("\'", "").replace("%", "%%") elif type(v) in (int, bool, float): ret_params[k] = v except Exception as ex: log.error(ex.message) log.error(traceback.format_exc()) raise ex log.debug("After converting: %s" % ret_params) return ret_params ``` thx a lot. wenlong |
|
From: Thorsten L. <iss...@bi...> - 2015-04-24 05:34:19
|
New issue 3383: Mapper setup does not run __declare_first__ or __declare_last__ in mixins anymore https://bitbucket.org/zzzeek/sqlalchemy/issue/3383/mapper-setup-does-not-run Thorsten Lockert: Handling of `__declare_first__` and `__declare_last__` (as used in e.g. the [PyCon 2014 ATM sample](https://bitbucket.org/zzzeek/pycon2014_atmcraft)) got broken with commit 7f82c55. One potential fix is the fragment below, but I am not convinced this is correct: ```patch --- ext/declarative/base.py 2015-04-23 20:27:08.000000000 -0700 +++ ext/declarative/base.py 2015-04-23 22:27:52.000000000 -0700 @@ -66,11 +66,10 @@ for base in cls.__mro__: _is_declarative_inherits = hasattr(base, '_decl_class_registry') - if attrname in base.__dict__: + if attrname in base.__dict__ and ( + base is cls or not _is_declarative_inherits): value = getattr(base, attrname) - if (base is cls or - (base in cls.__bases__ and not _is_declarative_inherits)): - return value + return value else: return None ``` Responsible: zzzeek |