'''INSERT INTO my_table(name, age)
SELECT %s, %s
WHERE NOT EXISTS(SELECT name FROM my_table WHERE name=%s)''', ('Scott', 23)
I doubt that worked, you have three parameter markers(%s) and two parameter values. Not only that two of the markers are for identifiers.
The count is indeed off but the two markers after the main select are literals, not identifiers. As is the one being compared to name.
SELECT 'Scott', 23;
is a valid query.
David J.