python —version
Python 2.6.6
# -*- coding: utf-8 -*- import MySQLdb ... >>> print(py_value) Какой'то текст >>> print(type(py_value)) <type 'unicode'> sql = '''insert into tablename(db_id, db_value) values ('%(db_id)s', '%(db_value)s') '''%{'db_id':py_id, db_value':py_value} cursor.execute(sql) db.commit()
Добавляю значение в БД и получаю ошибку: “_mysql_exceptions.ProgrammingError: (1064, ”You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near…“)
Тут всё понятно - виной всему кавычка в py_value.
Вопрос в том как экранировать её. Строку нужно сохранить в первозданном виде.
MySQLdb.escape_string(py_value) выдаёт ошибку:
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 14-15: ordinal not in range(128)
Что делать? Менять кавычки на ” “ в запросе бессмысленно, ведь как только в py_value попадётся ” - всё опять сломается