Я пишу небольшой скрипт на python, чтобы помочь мне автоматизировать создание баз данных mysql и связанных учетных записей для моих личных проектов.Часть этого скрипта представляет собой функцию, которая принимает имя базы данных в виде строки, а затем переходит к созданию базы данных.
def createDB(dbConn, dbName):
import MySQLdb
c = dbConn.cursor()
query = """CREATE DATABASE %s;""";
c.execute(query, (dbName,))
Это не работает, потому что CREATE DATABASE MySQL запрашивает имя базы данных без кавычек, как в
CREATE DATAbASE test_db
, но мой код пытаетсябезопасно вставьте предоставленное пользователем имя базы данных в запрос создает:
CREATE DATABASE 'test_db'
И вы получите «у вас проблема в синтаксисе MySQL рядом с тестом».
Даже если это для личного использованияЯ действительно не хочу просто вставлять предоставленную пользователем строку в запрос любого вида.Это против моей религии.Существует ли безопасный способ вставить предоставленное пользователем имя базы данных в запрос mySQL на python (или любом другом языке), который обеспечит правильное отклонение или экранирование ввода пользователя, такого как test_db; DROP some_other_db;
?