From 4b09f1423b382336f29722490bab3a4c8c8607ea Mon Sep 17 00:00:00 2001 From: Paulo Bu Date: Thu, 6 Nov 2014 21:14:17 +0100 Subject: Small improvement on FlushError can't update error message Output in the error message the table name and the column name. --- lib/sqlalchemy/orm/persistence.py | 8 ++++---- test/orm/test_unitofwork.py | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index 28254cc10..6b8d5af14 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -375,12 +375,12 @@ def _collect_update_commands(uowtransaction, table, states_to_update): params[col.key] = history.added[0] else: pk_params[col._label] = history.unchanged[0] + if pk_params[col._label] is None: + raise orm_exc.FlushError( + "Can't update table %s using NULL for primary " + "key value on column %s" % (table, col)) if params or value_params: - if None in pk_params.values(): - raise orm_exc.FlushError( - "Can't update table using NULL for primary " - "key value") params.update(pk_params) yield ( state, state_dict, params, mapper, diff --git a/test/orm/test_unitofwork.py b/test/orm/test_unitofwork.py index 247c5e7a8..ae5a8ef60 100644 --- a/test/orm/test_unitofwork.py +++ b/test/orm/test_unitofwork.py @@ -2479,7 +2479,8 @@ class PartialNullPKTest(fixtures.MappedTest): t1.col2 = 5 assert_raises_message( orm_exc.FlushError, - "Can't update table using NULL for primary key value", + "Can't update table t1 using NULL for primary " + "key value on column t1.col2", s.commit ) @@ -2492,7 +2493,8 @@ class PartialNullPKTest(fixtures.MappedTest): t1.col3 = 'hi' assert_raises_message( orm_exc.FlushError, - "Can't update table using NULL for primary key value", + "Can't update table t1 using NULL for primary " + "key value on column t1.col2", s.commit ) -- cgit v1.2.1