Un nom de base de données (ni des noms de colonne ou de table) ne sont pas des valeurs de données et ne constituent donc pas une utilisation appropriée des espaces réservés. vouloir faire cela est généralement un mauvais signe; seul le DBA doit pouvoir émettre un create database
, car cela nécessite des privilèges considérables. La plupart des applications nécessitent que le DBA émette la base de données de création, puis prenne la base de données créée comme paramètre à utiliser dans les arguments de dbapi.Connection.
Si vous êtes sûr d'en avoir besoin, que vous faites confiance à la source de l'entrée et que vous avez vérifié l'entrée pour les caractères non valides, vous feriez simplement la substitution en python, quelque chose comme :
def createDB(dbConn, dbName):
c = dbConn.cursor()
query = """CREATE DATABASE %s;""" % dbName
c.execute(query)