我的代码是:
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)
任何帮助表示赞赏.
这里有一些混乱,原因有以下几点:
(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)