python insert to table给出了类型错误

时间:2014-08-10 17:41:51

标签: python mysql sql list

我有一个代码,我无法插入数据库,我甚至需要插入空格或nil到数据库,如果在列表中找到: 请帮我将列表中的所有值插入数据库!

qw=[]
with open('qwe.txt','r') as file:
    for line in file:            
        matches = []
        for word in line.split():
            if word in keywords:
                matches.append(word)            
        if matches:

            ab= ' '.join(matches)
            qw.append(ab)    
        else:
            a1= 'nil'

            qw.append(a1)
print qw
for name in qw:
       cursor.execute(
       '''INSERT INTO Detail1 (Names)
          VALUES (%s, %s)''',
         (name))

但我得到的错误是:

>>> 
['bike car', 'nil', 'car', 'car bike car', 'nil', 'bike']

Traceback (most recent call last):
  File "C:\Python27\syram1.py", line 45, in <module>
    (name))
  File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 184, in execute
    query = query % db.literal(args)
TypeError: not enough arguments for format string
>>> 

请帮忙!答案将不胜感激!

2 个答案:

答案 0 :(得分:2)

insert语句只提到一个列名,而你传递两个参数

'''INSERT INTO Detail1 (Names)
          VALUES (%s, %s)'''

所以你需要试试这个:

'''INSERT INTO Detail1 (Names)
          VALUES (%s)'''

或提及Detail1表的第二列的名称

'''INSERT INTO Detail1 (Names,SecondColumnName)
          VALUES (%s, %s)'''

答案 1 :(得分:0)

你的格式字符串中有两次%s,这意味着格式字符串后面的“()”中应该有两个变量。