diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-17 13:31:29 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-02-17 13:31:29 -0500 |
commit | 591e0cf08a798fb16e0ee9b56df5c3141aa48959 (patch) | |
tree | ff89657eba4af89f2c8b1b832e56adb839d480b7 /doc/build/changelog/migration_11.rst | |
parent | a99a32d3d1669e1a66776b7e168119656e6aed02 (diff) | |
download | sqlalchemy-591e0cf08a798fb16e0ee9b56df5c3141aa48959.tar.gz |
- All string formatting of bound parameter sets and result rows for
logging, exception, and ``repr()`` purposes now truncate very large
scalar values within each collection, including an
"N characters truncated"
notation, similar to how the display for large multiple-parameter sets
are themselves truncated.
fixes #2837
Diffstat (limited to 'doc/build/changelog/migration_11.rst')
-rw-r--r-- | doc/build/changelog/migration_11.rst | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/doc/build/changelog/migration_11.rst b/doc/build/changelog/migration_11.rst index 9ad99ae9f..8ed6ad6b5 100644 --- a/doc/build/changelog/migration_11.rst +++ b/doc/build/changelog/migration_11.rst @@ -883,6 +883,45 @@ this CHECK constraint can now be disabled using the new :ticket:`3095` +.. _change_2837: + +Large parameter and row values are now truncated in logging and exception displays +---------------------------------------------------------------------------------- + +A large value present as a bound parameter for a SQL statement, as well as a +large value present in a result row, will now be truncated during display +within logging, exception reporting, as well as ``repr()`` of the row itself:: + + >>> from sqlalchemy import create_engine + >>> import random + >>> e = create_engine("sqlite://", echo='debug') + >>> some_value = ''.join(chr(random.randint(52, 85)) for i in range(5000)) + >>> row = e.execute("select ?", [some_value]).first() + ... (lines are wrapped for clarity) ... + 2016-02-17 13:23:03,027 INFO sqlalchemy.engine.base.Engine select ? + 2016-02-17 13:23:03,027 INFO sqlalchemy.engine.base.Engine + ('E6@?>9HPOJB<<BHR:@=TS:5ILU=;JLM<4?B9<S48PTNG9>:=TSTLA;9K;9FPM4M8M@;NM6GU + LUAEBT9QGHNHTHR5EP75@OER4?SKC;D:TFUMD:M>;C6U:JLM6R67GEK<A6@S@C@J7>4=4:P + GJ7HQ6 ... (4702 characters truncated) ... J6IK546AJMB4N6S9L;;9AKI;=RJP + HDSSOTNBUEEC9@Q:RCL:I@5?FO<9K>KJAGAO@E6@A7JI8O:J7B69T6<8;F:S;4BEIJS9HM + K:;5OLPM@JR;R:J6<SOTTT=>Q>7T@I::OTDC:CC<=NGP6C>BC8N',) + 2016-02-17 13:23:03,027 DEBUG sqlalchemy.engine.base.Engine Col ('?',) + 2016-02-17 13:23:03,027 DEBUG sqlalchemy.engine.base.Engine + Row (u'E6@?>9HPOJB<<BHR:@=TS:5ILU=;JLM<4?B9<S48PTNG9>:=TSTLA;9K;9FPM4M8M@; + NM6GULUAEBT9QGHNHTHR5EP75@OER4?SKC;D:TFUMD:M>;C6U:JLM6R67GEK<A6@S@C@J7 + >4=4:PGJ7HQ ... (4703 characters truncated) ... J6IK546AJMB4N6S9L;;9AKI;= + RJPHDSSOTNBUEEC9@Q:RCL:I@5?FO<9K>KJAGAO@E6@A7JI8O:J7B69T6<8;F:S;4BEIJS9HM + K:;5OLPM@JR;R:J6<SOTTT=>Q>7T@I::OTDC:CC<=NGP6C>BC8N',) + >>> print row + (u'E6@?>9HPOJB<<BHR:@=TS:5ILU=;JLM<4?B9<S48PTNG9>:=TSTLA;9K;9FPM4M8M@;NM6 + GULUAEBT9QGHNHTHR5EP75@OER4?SKC;D:TFUMD:M>;C6U:JLM6R67GEK<A6@S@C@J7>4 + =4:PGJ7HQ ... (4703 characters truncated) ... J6IK546AJMB4N6S9L;;9AKI; + =RJPHDSSOTNBUEEC9@Q:RCL:I@5?FO<9K>KJAGAO@E6@A7JI8O:J7B69T6<8;F:S;4BEIJS9H + MK:;5OLPM@JR;R:J6<SOTTT=>Q>7T@I::OTDC:CC<=NGP6C>BC8N',) + + +:ticket:`2837` + .. _change_2528: A UNION or similar of SELECTs with LIMIT/OFFSET/ORDER BY now parenthesizes the embedded selects |