sql >> Base de Datos >  >> RDS >> Mysql

¿Hay alguna forma segura de parametrizar nombres de bases de datos en consultas MySQL?

Un nombre de base de datos (ni nombres de columnas o tablas) no son valores de datos y, por lo tanto, no son un uso apropiado de marcadores de posición. querer hacer esto suele ser una mala señal; solo el DBA debería poder emitir una create database , ya que hacerlo requiere algunos privilegios considerables. La mayoría de las aplicaciones requieren que el DBA emita la base de datos de creación y luego tome la base de datos creada como un parámetro para usar en los argumentos de dbapi.Connection.

Si está seguro de que necesita esto, confía en la fuente de la entrada y ha verificado la entrada en busca de caracteres no válidos, simplemente haría la sustitución en python, algo como:

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