Задать вопрос
MAKAPOH
@MAKAPOH
многостаночник

Как правильно формировать запрос в MySQL ?

Добрый день.
Использую PyMySQL для подключения к БД. Непонятно как правильно передавать параметры в запрос, пишу так:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function
import pymysql as mysql

conn = mysql.connect(
    host='192.168.0.101',
    port=3306,
    user='login',
    passwd='password',
    # db='information_schema',
    charset='utf8'
)

print("paramstyle - {0}".format(mysql.paramstyle))
cursor = conn.cursor()
cursor.execute('CREATE DATABASE IF NOT EXISTS %s', ('ddd',))

Выхлоп:
paramstyle - format
pymysql.err.ProgrammingError: (1064, u"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 ''ddd'' at line 1")

Если последнюю строку заменить на:
cursor.execute('CREATE DATABASE IF NOT EXISTS ddd')

То БД создаётся. Похоже что дело в том что имя базы данных подставляется в кавычках, но что с этим делать непонятно. Подскажите как быть, что делать?
Обновление
Совет вместо запятой поставить знак % эквивалентен второму случаю когда я сам в строку запроса подставлю название БД. Но не забываем что в этом случае мы теряем автоматическое экранирование, чего не хочется. И в конце концов оно же должно так работать, или нет?
Обновление 2
Был получен ответ от разработчиков, из которого следует что запросы с обратными апострофами следует строить вручную.
  • Вопрос задан
  • 2512 просмотров
Подписаться 2 Комментировать
Подписчики вопроса 2 К ответам на вопрос (1)