Я также заметил онлайн, хотя обратные помехи не являются стандартным SQL.

у небольшой скрипт на python, чтобы помочь мне автоматизировать создание баз данных mysql и связанных учетных записей для моих личных проектов. Часть этого скрипта представляет собой функцию, которая принимает имя базы данных в виде строки, а затем переходит к созданию базы данных.

def createDB(dbConn, dbName):
    import MySQLdb
    c = dbConn.cursor()
    query = """CREATE DATABASE %s;""";
    c.execute(query, (dbName,))

Это не работает, потому чтоБаза данных MySQL CREATE запрашивает имя базы данных без кавычек, как в

  CREATE DATAbASE test_db

но мой код, который пытается безопасно вставить предоставленное пользователем имя базы данных в запрос, создает:

  CREATE DATABASE 'test_db'

И вы получите «у вас проблема в синтаксисе MySQL рядом с тестом».

Несмотря на то, что это для личного использования, я действительно не хочу просто вставлять предоставленную пользователем строку в запрос любого вида. Это против моей религии. Есть ли безопасный способ вставить предоставленное пользователем имя базы данных в запрос MySQL на Python (или любой другой язык), который будет гарантировать, что пользовательский ввод, такой какtest_db; DROP some_other_db; будет отклонен или сбежал правильно?

Ответы на вопрос(2)

Ваш ответ на вопрос