Добрый день.
Использую
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
Был получен
ответ от разработчиков, из которого следует что запросы с обратными апострофами следует строить вручную.