Найти - Пользователи
Полная версия: Экранирование кавычек
Начало » Python для новичков » Экранирование кавычек
1
Trimso
Приветствую!

Подскажите, пожалуйста, как надо работать с кавычками.
Код:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import MySQLdb

# DB connect
db = MySQLdb.connect(host="127.0.0.1", user="user", passwd="pass", db="testdb", charset='utf8')
cursor = db.cursor()

content = "==='==="

sql = """INSERT INTO test( content ) VALUES ( %(content)s )""" % { 'content':content }
cursor.execute(sql)
db.commit()
Ошибка:
_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 '==='=== )' at line 1")
Таблица простая, привожу на всякий случай:
CREATE TABLE IF NOT EXISTS `test` (
`content` varchar(256) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Очевидно, что проблема в одинарной кавычке, однако, драйвер MySQL должен был о ней позаботиться. Или я ошибаюсь?
dimabest
драйвер позаботится, если подстановку делать правильно:
cursor.execute("INSERT INTO test (content) VALUES (%(content)s)",  { 'content': content })
или
cursor.execute("INSERT INTO test (content) VALUES (%s)",  [content])
Trimso
То есть в моём случае до драйвера не доходило - я пихал аргументы в строку до него.
Спасибо за помощь!
Seganapa
Метод форматирования строк…

Например:
o = 'orange'
p = 'potatoes'
pep ='pepper'
val = 'fruit {0}, vegetable \{{1}, {2}\}' .format(o, p, pep)
print val

Почему не экранируются \{ \} ?
py.user.next
>>> o = 'orange'
>>> p = 'potatoes'
>>> pep ='pepper'
>>> val = 'fruit {0}, vegetable {{{1}, {2}}}' .format(o, p, pep)
>>> print val
fruit orange, vegetable {potatoes, pepper}
>>>
Seganapa
Спасибо!
А как в таком случае?:

import json
from collections import OrderedDict
city = 1
json_arg = json.dumps(OrderedDict([
                                           ("celebration_type","party"),
                                           ("town_id", "???? city")],
                                          )) 
 
print json_arg

Мне нужно чтобы значение переменной city подставлялось в “town_id” в кавычках…
reclosedev
Seganapa
Мне нужно чтобы значение переменной city подставлялось в “town_id” в кавычках…

В конкретном случае, при использовании json, если ему передать строку, то она будет в кавычках:
...
("town_id", str(city))
...

Просто подстановка:
print '"%s"' % city

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