MySQL执行命令中的Python变量

MySQL执行命令中的Python变量,python,mysql,mysql-python,mysql-error-1064,Python,Mysql,Mysql Python,Mysql Error 1064,我到处都在寻找答案,但没有找到合适的答案 这是我的代码: conn = pymysql.Connect(host="host", user="user", passwd="password", db="database") dbhandler = conn.cursor() table_name = today_date.split(" ")[0] execute_it = """CREATE TABLE %s ( USERNAME CHAR(20) NOT NULL,

我到处都在寻找答案,但没有找到合适的答案

这是我的代码:

conn = pymysql.Connect(host="host", user="user", passwd="password", db="database")

dbhandler = conn.cursor()
table_name = today_date.split(" ")[0]
execute_it = """CREATE TABLE %s (
        USERNAME CHAR(20) NOT NULL, 
        X CHAR(10), 
        Y INT, 
        Z INT, 
        A INT)"""

try:
    dbhandler.execute(execute_it, table_name)
except:
    print("\n----------------------------\nFailed to create table.")
现在我试着这样做。 我尝试在执行中使用%分隔。 我试过了?而不是%s。 我尝试了更多的选项,但没有一个对我有效,我也没能创建表

这是我得到的例外:

(1064),“您的SQL语法有错误;请检查以下手册: 对应于要使用的正确语法的MariaDB服务器版本 靠近“11/14/18”(\n用户名字符(20)不为空,\n
X字符(第1行10英寸)

使用5.5.52-1

谢谢大家!

编辑:

设法挺过去了。
感谢Pavel Francírek的帮助。

问题不在占位符中,而在日期格式中。表名中不允许使用字符“/”。请尝试以下操作:

table_name = today_date.split(" ")[0].replace("/","")

我假设您的日期格式中的所有数字都是两位数。

顺便说一句,我还尝试了在表格名称(用户名、X、Y、Z、A)中插入值(%s、%s、%d、%d)”,(值1、值2、值3、值4、值5)嗯,可能表名必须以字母开头:table_name=“t”+today_date.split(“”[0]。replace(“/”,“”)通常,只有一个占位符(%s),而不是字符串格式的占位符(无%d等)请参阅第二条评论,但无论如何,我也尝试了您所说的内容,但没有效果。实际上,我在这里失去了理智,我尝试了几乎所有的选项,但都没有效果……您可以尝试使用Python的“.format()。但前提是您对数据源绝对确定(注意SQL注入)