我希望使用pymysql模块从用户输入中自动创建数据库和用户。
我希望在一个数据库中为新创建的用户授予所有权限:
cur.execute("GRANT ALL PRIVILEGES ON %s.* to %s@%s IDENTIFIED BY %s", (DB_NAME,DB_USER, DB_HOST, DB_PASS))
我收到以下错误。
pymysql.err.ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''test26'.* to 'test26'@'localhost' IDENTIFIED BY 'test26'' at line 1")
答案 0 :(得分:1)
您不能使用查询参数来转义数据库或表名。那些使用反引号作为转义字符,而不是引号:
GRANT ALL PRIVILEGES ON `db_name`.* ...
因此,对于数据库和服务器部分,您需要使用字符串操作,这意味着您需要确保数据已正确清理,例如仅允许使用字母数字字符作为数据库名称。