curr.pgsql.execute('''
INSERT INTO my_table(name, age)SELECT %s, %sWHERE NOT EXISTS(SELECT name FROM my_table WHERE name= name)''', ('Scott', 23))
So, WHERE name = name is ALWAYS true and so as long as there is at least one record in my_table the exists returns true, and the not inverts it to false and the main select returns zero rows. You have successfully inserted a record that doesn't exist (i.e., you've inserted nothing just like you observe).
David J.