Python 简单的;创建;或;“下降表”;PyMySQL和参数替换失败
我基本上是使用以下代码删除一个使用Python 3.6和PyMySQL的现有表,以及一个MySQL 5.7数据库:Python 简单的;创建;或;“下降表”;PyMySQL和参数替换失败,python,mysql,pymysql,Python,Mysql,Pymysql,我基本上是使用以下代码删除一个使用Python 3.6和PyMySQL的现有表,以及一个MySQL 5.7数据库: connection = pymysql.connect( host=host, user=username, password=password, db=database, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) table_name = "video
connection = pymysql.connect(
host=host,
user=username,
password=password,
db=database,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
table_name = "video_playback_statistics"
sql = "DROP TABLE IF EXISTS %s"
params = (table_name,)
with connection.cursor() as cursor:
cursor.execute(sql, params)
我得到以下错误:
pymysql.err.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第1行“视频播放统计信息”附近使用的正确语法”
我已经成功地执行了其他具有更多参数的更复杂的SQL语句,但这个简单的语句不起作用
当我在没有参数化的情况下运行SQL命令时,它工作正常:
cursor.execute('DROP TABLE IF EXISTS video_playback_statistics')
我已经研究了以下问题:
但是在这里,表名直接写入字符串。根据,表名或列名的参数化显然是不可能的。由于某种原因,适配器为值插入了两个双引号,这会导致语法错误 两种可能的解决办法是:
sql = "DROP TABLE IF EXISTS `%s`"
sql = "DROP TABLE IF EXISTS {}".format(table_name)
INSERT
或WHERE
语句中),仍应使用参数化