Library throws 'super' object has no attribute 'coerce' when column value is null()
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
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.
Would happily accept a pr for this.
Could you please take a look at PR ?
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?
I am seeing this happen when the JSON passed is a string (which is valid json)