Here is the stack trace, if it can help anyone figure out what I might be
doing wrong:
Traceback (most recent call last):
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/pyramid_debugtoolbar-2.2.2-py3
.4.egg/pyramid_debugtoolbar/panels/performance.py", line 57, in
resource_timer_handler
result = handler(request)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/pyramid_debugtoolbar-2.2.2-py3.4.egg/pyramid_debugtoolbar/panels/performance.py"
, line 87, in profile_handler
result = self.profiler.runcall(handler, request)
File "/usr/lib/python3.4/cProfile.py", line 109, in runcall
return func(*args, **kw)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/pyramid/tweens.py"
, line 21, in excview_tween
response = handler(request)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/pyramid_tm-0.8-py3.4.egg/pyramid_tm/__init__.py"
, line 92, in tm_tween
reraise(*exc_info)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/pyramid_tm-0.8-py3.4.egg/pyramid_tm/compat.py"
, line 13, in reraise
raise value
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/pyramid_tm-0.8-py3.4.egg/pyramid_tm/__init__.py"
, line 80, in tm_tween
manager.commit()
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_manager.py"
, line 111, in commit
return self.get().commit()
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py"
, line 280, in commit
reraise(t, v, tb)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_compat.py"
, line 55, in reraise
raise value
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py"
, line 271, in commit
self._commitResources()
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py"
, line 417, in _commitResources
reraise(t, v, tb)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_compat.py"
, line 55, in reraise
raise value
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/transaction-1.4.3-py3.4.egg/transaction/_transaction.py"
, line 389, in _commitResources
rm.tpc_begin(self)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/zope.sqlalchemy-0.7.5-py3.4.egg/zope/sqlalchemy/datamanager.py"
, line 90, in tpc_begin
self.session.flush()
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/session.py"
, line 1919, in flush
self._flush(objects)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/session.py"
, line 2037, in _flush
transaction.rollback(_capture_exception=True)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/util/langhelpers.py"
, line 60, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/util/compat.py"
, line 182, in reraise
raise value
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/session.py"
, line 2001, in _flush
flush_context.execute()
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/unitofwork.py"
, line 372, in execute
rec.execute(self)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/unitofwork.py"
, line 526, in execute
uow
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/persistence.py"
, line 65, in save_obj
mapper, table, insert)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/orm/persistence.py"
, line 570, in _emit_insert_statements
execute(statement, multiparams)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/engine/base.py"
, line 729, in execute
return meth(self, multiparams, params)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/sql/elements.py"
, line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/engine/base.py"
, line 826, in _execute_clauseelement
compiled_sql, distilled_params
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/engine/base.py"
, line 958, in _execute_context
context)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/engine/base.py"
, line 1159, in _handle_dbapi_exception
exc_info
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/util/compat.py"
, line 188, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=exc_value)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/util/compat.py"
, line 181, in reraise
raise value.with_traceback(tb)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/engine/base.py"
, line 951, in _execute_context
context)
File
"/home/user/.virtualenvs/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.8-py3.4-linux-x86_64.egg/sqlalchemy/engine/default.py"
, line 436, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (IntegrityError) insert or update on table
"child" violates foreign key constraint "child_parent_uuid_fkey"
DETAIL: Key (parent_uuid)=(77e0ed2c-1ec5-45dc-8375-e49677236577) is not
present in table "parent".
'INSERT INTO child (..............
On Saturday, December 6, 2014 9:55:10 PM UTC+1, alchemy1 wrote:
>
> I have an object that has a foreign key to another, declared like
>
> @declared_attr
> def object_uuid(cls):
> return Column(UUID, ForeignKey('object.uuid'), nullable=False)
>
>
> I then do something like
>
> DBSession.add(object)
> DBSession.add(dependent_object)
>
>
>
> Where DBSession is declared as
>
> DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension
> ()))
>
>
> I then get an error
>
> sqlalchemy.exc.IntegrityError: (IntegrityError) insert or update on table
> "dependent_object" violates foreign key constraint...
>
> Am I doing it incorrectly? I think the order of DBSession.add is incorrect,
> where I'm adding the main object first then the one with a foreign key to it.
> Do I need to somehow commit the first object to the database before the
> second one can see it and satisfy the constraint? Ideally it wouldn't be
> necessary so that there's not an extra trip to the database.
>
> (Might be relevant but I hadn't worked on this project in about 6-8 months
> and I could have sworn this was working fine then. Today when I pulled down
> the dependencies from pip I wonder if some version of something that's newer
> might be causing the change.)
>
>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.