I disagree. The database must store those data with a specific binary representation. TRUE/FALSE, T/F, 0/1 are not all equivalent when looking at the binary data. The database, driver, or interface may provide convenience wrapping around the stored value.
For example, MySQL provides a BOOLEAN datatype that's simply an alias for TINYINT(1). I can work with those data using the Boolean literals TRUE/FALSE, but the underlying data are not stored as "TRUE" or "FALSE". They're stored as a 0 or 1.
In my test, I have updated pypyodbc to output the raw binary data received from the ODBC driver before any processing occurs. This provides me a way to visualize the raw binary data provided directly from the ODBC driver itself. I'm observing that these data contain ASCII encoded characters 'T' and 'F'.
Again, based on the documentation provided by Elevate DB 2, I expect that the BOOLEAN datatype is really stored as an integer value 0 or 1. Which suggests that the ODBC driver is converting that into a character somewhere along the way.