MySQL-Python не делает ничего особенного, он просто кодирует каждый аргумент для предотвращения SQL-инъекций и использует стандартный оператор Python %
для замены заполнителей %s
на закодированные аргументы.
Если вы действительно хотитечтобы увидеть результат, запустите тот же код, что и cursor.execute()
:
from MySQLdb.converters import get_codec
def prepare_sql(cursor, query, args=None):
if args is not None:
query = query % tuple(( get_codec(a, cursor.encoders)(db, a) for a in args ))
return query
См. определение execute()
, начиная со строки 168 в MySQLdb/cursors.py
.