使用python将列添加到表中的MySQL语法错误

0 python mysql syntax-error

我的代码是:

for key in keys:
    cursor.execute("""
                    ALTER TABLE segment_table ADD %s VARCHAR(40)
                    """, key)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,告诉我我的语法错误.当我用实际字符串替换%s时,语法错误消失了.

for key in keys:
    cursor.execute("""
                    ALTER TABLE segment_table ADD myColumn VARCHAR(40)
                    """)
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

Joh*_*hin 5

这里有一些混乱,原因有以下几点:

(1)mySQL使用%作为参数标记 - 很容易与%Python中的混淆string % (data1, data2, etc)

(2)有些人似乎不知道只有在SQL语法中可以使用表达式的情况下才能使用参数标记- 这不包括表名,列名,函数名,关键字等

(3)代码 - 高尔夫onelinerism

必需的SQL: ALTER TABLE segment_table ADD myColumn VARCHAR(40)

使用参数不起作用:

key = "myColumn"
sql = "ALTER TABLE segment_table ADD %s VARCHAR(40)" # col name not OK as parm
cursor.execute(sql, (key, ))
Run Code Online (Sandbox Code Playgroud)

您需要使用例如Python字符串格式构建可接受的SQL语句:

key = "myColumn"
sql = "ALTER TABLE segment_table ADD %s VARCHAR(40)" % key
cursor.execute(sql)
Run Code Online (Sandbox Code Playgroud)