logger.debug
The logger statements are intended to log the tuple. Interpolation/parameterization wouldn't work, anyways, as not all databases necessarily use "%s" to signify parameters...sqlite uses "?" for instance. The idea is that we log both the SQL and the params as a tuple rather than trying to interpolate. I understand that
('SELECT c FROM t WHERE d > ?', [3])
is more preferable than
('SELECT c FROM t WHERE d > 3')
and more correct. I am not saying you can or should interpolate, probably you cannot, or that arguments should not be logged, they should be.

What I am saying is that nobody ever expects LogRecord.msg to be anything but string. All log files are screwed. > What I am saying is that nobody ever expects LogRecord.msg to be anything but string. All log files are screwed.

You have to explicitly enable logging for peewee, and even then, at the DEBUG level. If you are trying to log peewee at the debug level, presumably you know what you're doing.
I am pretty sure logger.debug is called wrong way all across the code
I have found lines like this

    logger.debug((sql, params))

in peewee.py and playhouse/apsw_ext.py, but it really should be

    logger.debug(sql, params)

because method signature is

    debug(msg, *args, **kwargs)

and one should pass format string and arguments for that format string as separate arguments, not a tuple. You can find an usage example in docs

    FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
    logging.basicConfig(format=FORMAT)
    d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
    logger = logging.getLogger('tcpserver')
    logger.warning('Protocol problem: %s', 'connection reset', extra=d)

Also test_utils.count_queries contains

    q.msg[0].startswith('SELECT ')

while it really should be

    q.msg.startswith('SELECT ')

Again, you can find in docs that "msg – The event description message, possibly a format string with placeholders for variable data." and not tuple.