views:

355

answers:

1

Two part question. Using postgres in python. 1) How do I replace all fields from the same column that match a specified value? For example, let's say I want to replace any fields that match "green" with "red" in the "Color" column.

2) How to delete all fields from the same column that match a specified value? For example, I'm trying to deleted all fields that match "green" in the Color column.

+2  A: 

Ad1. You need something like this:

session.query(Foo).filter_by(color = 'green').update({ 'color': 'red' })
session.commit()

Ad2. Similarly:

session.query(Foo).filter_by(color = 'green').delete()
session.commit()

You can find the querying documentation here and here.

PiotrLegnica
I think the second answer deletes the entire row. I actually only want to delete the field.
teggy
I tried to use something like this to make field empty but it not seem to work: session.query(Foo).filter_by(color = 'green').update({ 'color': '' })
teggy
Try 'color': None
iElectric
`session.query(Foo).filter_by(color = 'green').update({ 'color': '' })` should work just fine. Maybe you didn't commit? Anyway, creating the engine with `echo = True` (or configuring `sqlalchemy.engine` logger) should help you debug that.
PiotrLegnica