在python mySQLdb中生成动态表名

在python mySQLdb中生成动态表名,python,Python,我正试图编写一个程序,在其中循环遍历字符串列表并使用这些字符串为我的表命名,但是我不太明白如何正确地转义所有内容而不出错。 这是我现在的代码: cursor = db.cursor() cursor.execute('DROP TABLE IF EXISTS %s' %data[1]) 0L sql ="""CREATE TABLE %s (IP TEXT, AVAILIBILITY INT)""" %data[1] cursor.execute(sql) 0L for key in d

我正试图编写一个程序,在其中循环遍历字符串列表并使用这些字符串为我的表命名,但是我不太明白如何正确地转义所有内容而不出错。 这是我现在的代码:

cursor = db.cursor()
cursor.execute('DROP TABLE IF EXISTS %s' %data[1])

0L

sql ="""CREATE TABLE %s  (IP TEXT, AVAILIBILITY INT)""" %data[1]
cursor.execute(sql)
0L

for key in data[0]:

    cursor.execute("""INSERT INTO %s VALUES (%s,%s)""" %(data[1],key,data[0][key]))
    db.commit()


1L
cursor.execute("""SELECT * FROM %s""" %data[1])
1L
print cursor.fetchall()
((188L, 90),) 
db.close()

当我输入字符串而不是表示字符串的变量时,我的代码可以工作,但在使用变量时失败。您应该在此行中使用字符串格式

sql=“”创建表数据[1](IP文本、可用性INT、AP文本)””

当您对其调用cur.execute(sql)方法时,这将引发errorclass或/和errorvalue错误

试着这样做:
sql=“”创建表%s(IP文本,可用性INT,AP文本)””“%data[1]

谢谢,这对该行和之后的行都有效,但是现在我在这里收到一个错误,上面写着“格式字符串参数不足”游标。执行(“”插入到%s值(%s,%s,%s)中)“%data[1],(key,item[key],data[1])”
sql=“”插入%s值(%s,%s,%s)”“”%(data[1],key,item[key],data[1])
对于多个字符串格式,请使用
%(var1,var2,var3,var4…
也可以在此处查找-谢谢,这并没有完全解决问题,我得到了“字符串索引必须是整数而不是str”现在,我可以从这里开始,也许你的
字典有问题。您能否共享
项目
字典和
数据
列表中的一段内容?它只是映射到0的1或2的字符串({'10.32.20.158': 1, '10.32.20.159': 1, '10.32.20.150': 1, '10.32.20.151': 1, '10.32.20.152': 1, '10.32.20.153': 1, '10.32.20.154': 1, '10.32.20.155': 1, '10.32.20.156': 1, '10.32.20.157': 1, '10.32.20.215': 1, '10.32.20.253': 1, '10.32.20.252': 1, '10.32.20.251': 1