首页 > 解决方案 > MySQL中的Python变量执行命令

问题描述

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

这是我的代码:

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 USERNAME CHAR(20) NOT NULL, \ n
X CHAR(10' 在第 1 行")

使用 5.5.52-MariaDB。

谢谢!

编辑:

设法通过它。感谢 Pavel Francírek 的帮助。

标签: pythonmysqlmysql-pythonmysql-error-1064

解决方案


问题不在于占位符,而在于日期格式。表名中不允许使用字符“/”。尝试类似:

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

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


推荐阅读