Найти - Пользователи
Полная версия: mysql экранирование unicode
Начало » Python для новичков » mysql экранирование unicode
1
http8800
Друзья, стыдно спрашивать, но не могу разобраться.

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 попадётся ” - всё опять сломается
Apxumekmop
Попробуй
r"текст с кавычками"
PooH
Уже много-много раз спрашивали
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB