]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- do the trailing comma logic of tuple repr() exactly
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 17 Feb 2016 20:21:00 +0000 (15:21 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 17 Feb 2016 20:21:00 +0000 (15:21 -0500)
lib/sqlalchemy/sql/util.py
test/engine/test_logging.py

index 98d9cc944747688f30f53a21e8f0a72ca4563947..d40bf48f1fac6a4414a35e8d0af98affc6a56aae 100644 (file)
@@ -311,8 +311,9 @@ class _repr_row(_repr_base):
 
     def __repr__(self):
         trunc = self.trunc
-        return "(%s)" % (
-            "".join(trunc(value) + "," for value in self.row)
+        return "(%s%s)" % (
+            ", ".join(trunc(value) for value in self.row),
+            "," if len(self.row) == 1 else ""
         )
 
 
@@ -391,8 +392,10 @@ class _repr_params(_repr_base):
                 )
             )
         elif typ is self._TUPLE:
-            return "(%s)" % (
-                "".join(trunc(value) + "," for value in params)
+            return "(%s%s)" % (
+                ", ".join(trunc(value) for value in params),
+                "," if len(params) == 1 else ""
+
             )
         else:
             return "[%s]" % (
index 847ba06c4ee1fa9a0b35c46ead0a0cc2905f2fe7..efdee8aef676dbc4f8746fd17b686d3e615926b3 100644 (file)
@@ -69,6 +69,24 @@ class LogParamsTest(fixtures.TestBase):
             )
         )
 
+    def test_log_large_multi_parameter(self):
+        import random
+        lp1 = ''.join(chr(random.randint(52, 85)) for i in range(5))
+        lp2 = ''.join(chr(random.randint(52, 85)) for i in range(8))
+        lp3 = ''.join(chr(random.randint(52, 85)) for i in range(670))
+
+        self.eng.execute(
+            "SELECT ?, ?, ?",
+            (lp1, lp2, lp3)
+        )
+
+        eq_(
+            self.buf.buffer[1].message,
+            "('%s', '%s', '%s ... (372 characters truncated) ... %s')" % (
+                lp1, lp2, lp3[0:149], lp3[-149:]
+            )
+        )
+
     def test_log_large_parameter_multiple(self):
         import random
         lp1 = ''.join(chr(random.randint(52, 85)) for i in range(5000))