Mysql
 sql >> Database >  >> RDS >> Mysql

Esiste un modo sicuro per parametrizzare i nomi dei database nelle query MySQL?

Un nome di database (né nomi di colonne o tabelle) non sono valori di dati e quindi non sono un uso appropriato dei segnaposto. volerlo fare di solito è un brutto segno; solo il DBA dovrebbe essere in grado di emettere un create database , poiché ciò richiede alcuni privilegi considerevoli. La maggior parte delle applicazioni richiede che il DBA emetta il database di creazione e quindi prenda il database creato come parametro da utilizzare negli argomenti di dbapi.Connection.

Se sei sicuro di aver bisogno di questo, ti fidi della fonte dell'input e hai controllato l'input per caratteri non validi, faresti semplicemente la sostituzione in Python, qualcosa del tipo:

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