From 2fed265b95ab5f932e801824dc0089c7fcd0f916 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 27 Mar 2007 21:01:32 +0000 Subject: [PATCH] - some logging cleanup - added 'encodedname' prop to a few ClauseElements to aid logging --- lib/sqlalchemy/orm/unitofwork.py | 7 +++++++ lib/sqlalchemy/orm/uowdumper.py | 8 +++----- lib/sqlalchemy/sql.py | 4 +++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index 7fdcaeba25..7a12d554d6 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -21,6 +21,7 @@ changes at once. from sqlalchemy import util, logging, topological from sqlalchemy.orm import attributes +from sqlalchemy.orm import util as mapperutil from sqlalchemy.orm.mapper import object_mapper, class_mapper from sqlalchemy.exceptions import * import StringIO @@ -249,12 +250,18 @@ class UOWTransaction(object): save/delete registration is entered for the object. """ + #print "REGISTER", repr(obj), repr(getattr(obj, '_instance_key', None)), str(isdelete), str(listonly) # if object is not in the overall session, do nothing if not self.uow._is_valid(obj): + if logging.is_debug_enabled(self.logger): + self.logger.debug("object %s not part of session, not registering for flush" % (mapperutil.instance_str(obj))) return + if logging.is_debug_enabled(self.logger): + self.logger.debug("register object for flush: %s isdelete=%s listonly=%s postupdate=%s" % (mapperutil.instance_str(obj), isdelete, listonly, postupdate)) + mapper = object_mapper(obj) self.mappers.add(mapper) task = self.get_task_by_mapper(mapper) diff --git a/lib/sqlalchemy/orm/uowdumper.py b/lib/sqlalchemy/orm/uowdumper.py index 166e3b8795..3e691f5a79 100644 --- a/lib/sqlalchemy/orm/uowdumper.py +++ b/lib/sqlalchemy/orm/uowdumper.py @@ -1,4 +1,5 @@ from sqlalchemy.orm import unitofwork +from sqlalchemy.orm import util as mapperutil """Dumps out a string representation of a UOWTask structure""" @@ -162,9 +163,9 @@ class UOWDumper(unitofwork.UOWExecutor): objid = "(placeholder)" else: if attribute is not None: - objid = "%s(%s).%s" % (te.obj.__class__.__name__, hex(id(te.obj)), attribute) + objid = "%s.%s" % (mapperutil.instance_str(te.obj), attribute) else: - objid = "%s(%s)" % (te.obj.__class__.__name__, hex(id(te.obj))) + objid = mapperutil.instance_str(te.obj) if self.verbose: return "%s (UOWTaskElement(%s, %s))" % (objid, hex(id(te)), (te.listonly and 'listonly' or (te.isdelete and 'delete' or 'save'))) elif process: @@ -191,8 +192,5 @@ class UOWDumper(unitofwork.UOWExecutor): else: return '(none)' - def _repr(self, obj): - return "%s(%s)" % (obj.__class__.__name__, hex(id(obj))) - def _indent(self): return " |" * self.indent diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index edcf0f0429..6924a60ceb 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -1663,7 +1663,8 @@ class Join(FromClause): self.isouter = isouter name = property(lambda s: "Join object on " + s.left.name + " " + s.right.name) - + encodedname = property(lambda s: s.name.encode('ascii', 'backslashreplace')) + def _locate_oid_column(self): return self.left.oid_column @@ -1791,6 +1792,7 @@ class Alias(FromClause): alias = alias[0:15] alias = alias + "_" + hex(random.randint(0, 65535))[2:] self.name = alias + self.encodedname = alias.encode('ascii', 'backslashreplace') self.case_sensitive = getattr(baseselectable, "case_sensitive", True) def supports_execution(self): -- 2.47.2