Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Gibt es eine sichere Möglichkeit, Datenbanknamen in MySQL-Abfragen zu parametrisieren?

Ein Datenbankname (noch Spalten- oder Tabellennamen) sind keine Datenwerte und daher keine angemessene Verwendung von Platzhaltern. dies zu wollen, ist normalerweise ein schlechtes Zeichen; nur der DBA sollte in der Lage sein, ein create database auszugeben , da dazu einige beträchtliche Privilegien erforderlich sind. Die meisten Anwendungen erfordern, dass der DBA die create database ausgibt und dann die erstellte Datenbank als Parameter nimmt, der in den Argumenten für dbapi.Connection verwendet wird.

Wenn Sie sicher sind, dass Sie dies benötigen, der Quelle der Eingabe vertrauen und die Eingabe auf ungültige Zeichen überprüft haben, würden Sie einfach die Ersetzung in Python vornehmen, etwa so:

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