Et databasenavn (og heller ikke kolonne- eller tabelnavne) er ikke dataværdier og er derfor ikke en passende brug af pladsholdere. at ville gøre dette er normalt et dårligt tegn; kun DBA'en skal kunne udstede en create database
, da det kræver nogle betydelige privilegier. De fleste applikationer kræver, at DBA udsteder oprettelsesdatabasen, og derefter tager den oprettede database som en parameter, der skal bruges i argumenterne til dbapi.Connection.
Hvis du er sikker på, at du har brug for dette, stoler du på kilden til input, og du har kontrolleret inputtet for ugyldige tegn, ville du bare lave substitutionen i python, noget som:
def createDB(dbConn, dbName):
c = dbConn.cursor()
query = """CREATE DATABASE %s;""" % dbName
c.execute(query)