diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-10-19 12:52:55 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-10-19 13:09:16 -0400 |
| commit | 76ec285ba452acf36d725799896904477a9c2dbd (patch) | |
| tree | db9255ebc9e300a924d5febdd14c4b5604f73e37 /lib/sqlalchemy/orm | |
| parent | 2ee5d42e24d20e9e7a6bcef08976e018ccbcc718 (diff) | |
| download | sqlalchemy-76ec285ba452acf36d725799896904477a9c2dbd.tar.gz | |
Rewrite migration notes for [ticket:3514]
The change to "evaluates none" datatypes in the ORM was
not fully described in the migration notes, missing the
key behavioral change that a column which is missing a default
entirely will not receive a value for a missing JSON column now.
The issue here touched upon a revisit of the assumptions
in [ticket:3514], but overall the old behavior "worked" mostly
because the ORM wants to explicitly render NULL into an INSERT
for column values that are missing, which itself is a legacy
behavior which should be considered for possible removal in
a future major release. Given that "missing ORM value + no
column default set up == dont put it in the INSERT" would be
the most intuitive behavior, the move in [ticket:3514] represents
a step in this direction.
Change-Id: I454d5bb0773bd73d9864925dcc47f1f0810e33ba
Fixes: #3830
Diffstat (limited to 'lib/sqlalchemy/orm')
| -rw-r--r-- | lib/sqlalchemy/orm/persistence.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py index 24a33ee8d..2bc189c1d 100644 --- a/lib/sqlalchemy/orm/persistence.py +++ b/lib/sqlalchemy/orm/persistence.py @@ -396,6 +396,12 @@ def _collect_insert_commands( params[col.key] = value if not bulk: + # for all the columns that have no default and we don't have + # a value and where "None" is not a special value, add + # explicit None to the INSERT. This is a legacy behavior + # which might be worth removing, as it should not be necessary + # and also produces confusion, given that "missing" and None + # now have distinct meanings for colkey in mapper._insert_cols_as_none[table].\ difference(params).difference(value_params): params[colkey] = None |
