データベース名(または列名やテーブル名)はデータ値ではないため、プレースホルダーの適切な使用法ではありません。これをしたいのは通常悪い兆候です。 DBAのみがcreate database
を発行できる必要があります 、そうすることはかなりの特権を必要とするので。ほとんどのアプリケーションでは、DBAがデータベースの作成を発行し、作成されたデータベースを、dbapi.Connectionへの引数で使用されるパラメーターとして使用する必要があります。
これが必要であると確信し、入力のソースを信頼し、入力に無効な文字がないかチェックした場合は、Pythonで次のように置換するだけです。
def createDB(dbConn, dbName):
c = dbConn.cursor()
query = """CREATE DATABASE %s;""" % dbName
c.execute(query)