Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe alguma maneira segura de parametrizar nomes de banco de dados em consultas MySQL?


Um nome de banco de dados (nem nomes de coluna ou tabela) não são valores de dados e, portanto, não são um uso apropriado de espaços reservados. querer fazer isso geralmente é um mau sinal; somente o DBA deve ser capaz de emitir um create database , já que isso requer alguns privilégios consideráveis. A maioria dos aplicativos exige que o DBA emita o banco de dados create e, em seguida, tome o banco de dados criado como parâmetro a ser usado nos argumentos para dbapi.Connection.

Se você tem certeza de que precisa disso, confia na fonte da entrada e verificou a entrada para caracteres inválidos, basta fazer a substituição em python, algo como:
def createDB(dbConn, dbName):
    c = dbConn.cursor()
    query = """CREATE DATABASE %s;""" % dbName
    c.execute(query)