percent sign in column name breaks sql
> I have seen the other closed issue with modulo and percents and understand how psycopg2 binds params.

My guess is that the problem is with the way the parameters are interpolated into the SQL string. If you understand this, then it is hopefully clear why this column name was problematic.

I agree the Peewee error isn't too helpful but in the 8 years I've maintained this project I've never seen anyone use a "%" character in a column and report a problem. So I'm going to leave the code as-is. I'd suggest you stick to well-known conventions for naming your tables and columns.

https://launchbylunch.com/posts/2014/Feb/16/sql-naming-conventions/ Furthermore this isn't a Peewee problem, as much as it is a problem with Python strings interacting with percent signs. Peewee's introspection will detect the weird column name and use a valid Python identifier, so the introspector works correctly in my opinion.
I had a column named "win%" in one of my tables in Postgresql. When I tried to execute the query I got this error (last of the call stack):
```
File "/usr/local/lib/python3.5/dist-packages/peewee-3.5.2-py3.5-linux-x86_64.egg/peewee.py", line 2639, in execute_sql
    cursor.execute(sql, params or ())
IndexError: list index out of range
```

Anyways, after looking at the sql peewee generated I saw the percent sign, which after changing the name to win_pct fixed the problem. I have seen the other closed issue with modulo and percents and understand how psycopg2 binds params. But, I think introspection should give an error or warning that your table will be unusable. Since, the error peewee generates does not give you much hints. 