LINUX.ORG.RU

Проблема с MySQLdb в Python


0

0

Пробую писать блобы в mysql с помощью MySQLdb. Ничего не получается.

>>> db.cursor().execute('CREATE TABLE t(v LONGBLOB)')
0L
>>> file = open('1.jpg', 'rb').read()
>>> db.cursor().execute("INSERT INTO t (v) VALUES (%s)" % file)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 173, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\xff\xd8\xff\xe0' at line 1")

★★★★★

Последнее исправление: Black_Shadow (всего исправлений: 1)

Ну, попробуй raw string заместо просто string, т.е. в insert %r вместо %s.

tzukko
()

>«INSERT INTO t (v) VALUES (%s)» % file

Ничего хорошего из этого не выйдет. Оператор %s, примененный к строкам - это оператор строковой подстановки. Т.е., в метод execute передастся неправильная строка запроса.

А вот из такого:

db.cursor().execute(«INSERT INTO t (v) VALUES (%s)», (file,))

вполне может получиться.

Пруфлинк: http://mysql-python.sourceforge.net/MySQLdb.html#some-examples

dmitry_vk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.