A user tried to execute a procedure while lacking execute permissions on the object.
This caused the misleading error
raise api.ProgrammingError('You must supply %d parameters for this stored procedure' % \ (self.cmd.Parameters.Count - 1))
to be raised with self.cmd.Parameters.Count at 0 (so "-1" in the error message)
The problem was resolved once permissions were granted but can this situation be checked for and a better error raised?
Sorry, forgot to add that this was in MS SQL Server
This also happens if the procedure doesn't exist in the current database.