sqlalchemy-json icon indicating copy to clipboard operation
sqlalchemy-json copied to clipboard

Library throws 'super' object has no attribute 'coerce' when column value is null()

Open eskuat opened this issue 2 years ago • 4 comments

Code to reproduce the exception

from sqlalchemy import Column
from sqlalchemy import create_engine, null, Integer
from sqlalchemy.dialects.sqlite import JSON
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy_json import mutable_json_type

Base = declarative_base()
eng = create_engine("sqlite://")


class JTable(Base):
    __tablename__ = 'jtable'
    id = Column(Integer, primary_key=True)
    value = Column(mutable_json_type(JSON, nested=True))


def create_table():
    conn = eng.connect()
    conn.execute(
        """
        CREATE TABLE IF NOT EXISTS jtable  (
            id INTEGER PRIMARY KEY,
            value TEXT NULL
        );
        """
    )


if __name__ == "__main__":
    create_table()
    # throws - AttributeError: 'super' object has no attribute 'coerce'
    row = JTable(value=null())

This seem very similar to #10 and probably can be solved by adding similar checks. I can prepare a PR if necessary

eskuat avatar Sep 05 '23 19:09 eskuat

It sure looks like one of the paths is checked but the other one is left open. I'm curious if we really need two checks, or if the null() object compares equal to None, which would keep it a little more succinct.

Would happily accept a pr for this.

edelooff avatar Sep 07 '23 07:09 edelooff

Would happily accept a pr for this.

Could you please take a look at PR ?

eskuat avatar Nov 06 '23 11:11 eskuat

I get this same error in flask/SqlAlchemy when trying to set a non-null value on a column. (Talking to postgresql.) node.node_data = node_data

Or is there some other barely-related stupid mistake I'm making?

sqlalchemy-json_error 2023-11-26 at 3 34 57 PM

BillSeitz avatar Nov 26 '23 21:11 BillSeitz

I am seeing this happen when the JSON passed is a string (which is valid json)

chamini2 avatar Mar 18 '24 17:03 chamini2