我知道使用 python 模块 MySQLdb 在 SELECT 或 INSERT 查询中避免注入攻击的正确方法是:
cursor.execute("SELECT spam, eggs, sausage FROM breakfast WHERE price < %s", (max_price,))
但是,当我尝试在 CREATE 查询中应用相同的规则时,它会返回错误。我的代码:
cursor.execute("CREATE DATABASE %s;", ("test",))
它报告语法错误:
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test'' at line 1")
似乎是因为查询在数据库名称中添加了单引号,而 Mysql 不允许在 CREATE 查询中这样做?
那么,鉴于数据库名称或表名不固定,那么使用 python MySQLdb 模块创建数据库或表的正确方法是什么?