On Tue, Jul 18, 2017 at 12:47 AM, <vin...@benchling.com> wrote: > Hello, I'd like to report a bug report regarding JSON nulls and > underscore-prefixed attributes as we're upgrading from 1.0.17 to 1.1.11. > > I read through the behavior at > http://docs.sqlalchemy.org/en/latest/changelog/migration_11.html#change-3514 > and > http://docs.sqlalchemy.org/en/latest/changelog/migration_11.html#behavior-change-3514, > all of which makes sense to me. > > However, this does not seem to work for attributes which are prefixed with > an underscore. Example:
OK, this is great, it's likely not the "underscore" as much as that the attribute is named differently from the column. I will look to confirm this and set up a complete bug report, thanks! > > class A(db.Model): > __tablename__ = 'a' > > > id = db.Column(db.Integer, primary_key=True) > column1 = db.Column('column1', JSON, nullable=False) > _column2 = db.Column('column2', JSON, nullable=False) > > # Succeeds > db.session.add(A(column1=[], _column2=[])) > db.session.flush() > > # Succeeds > db.session.add(A(column1=None, _column2=[])) > db.session.flush() > > # Fails with integrity error > db.session.add(A(column1=[], _column2=None)) > db.session.flush() > > > (psycopg2.IntegrityError) null value in column "column2" violates not-null > constraint > DETAIL: Failing row contains (5, [], null). > [SQL: '-- manage.py:1242 in <module>\nINSERT INTO a (column1) VALUES > (%(column1)s) RETURNING a.id'] [parameters: {'column1': '[]'}] > > Using db.Column('column2', JSON, nullable=False, default=JSON.NULL) ends up > sending a JSON NULL, so basically it looks like it is ignoring explicitly > set None values for attributes that start with an underscore. > > This is not workflow blocking for us (I will just change our usages to also > use default=JSON.NULL), but wanted to file a bug report in case it's > something others run into as well! > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.