from Hacker News

Ask HN: SQL ORM with nested atomic updates?

by btdmaster on 3/24/25, 6:53 PM with 5 comments

I have some data structures that look like this:

Car:

  Seats: [{ID: frontSeatId}, {ID: backSeatId}]

  Driver: {'Name':'Joe', 'SalaryUSD': 42000}

  SoundSystem: 

    {'TypeID': androidAutoId, Protocols: [{ID: radioProtocolId}, {ID: bluetoothProtocolId}]}
In this system, we often need to do partial updates, like:

Car:

  Driver: {'Name': 'Jack'}

  SoundSystem:

    {Protocols: [{ID: bluetoothProtocolId}]}
Meaning that the SoundSystemProtocols table should delete and create new entries such that the car only supports bluetooth, and the driver should get renamed from Joe to Jack.

Is there an ORM that lets you do these partial updates atomically, without writing custom controllers for each Car-like object?

I want ergonomics over performance. I don't mind the language. Ideally it should allow a simple interface where the model defines the controller.

I've tried SQLModel, which promises this, but ended up with confusing JSON validation, mixing between SQLModel types and the internal SQLAlchemy model, and still had to write session.add(seats) by hand anyway.

If this doesn't exist for SQL, does another database support ID-as-value like this, where passing in an ID changes a reference, and passing in a value changes the value at that reference?