带有绑定的Python SQLite3错误;文件未按指定逐行处理

时间:2015-01-06 06:54:47

标签: python binding sqlite line

我试图使用Python代码填充SQLite3数据库,但我收到错误。下面是代码片段。当我运行这个并尝试提交我的列表'L2'时,我得到了

“错误提供的绑定数量不正确。当前语句使用3,并且提供了10个。”

因此,当我将其更改为包含所列项目的名为“red”的列表时(在下面的代码中),我仍然会收到错误...这次“当前语句使用3,并且提供了2个”。我可以将列表'red'的内容更改为我想要的任何内容,但它仍然有相同的错误!!

因此,显然识别“绑定”以及如何计算它们存在问题。

Code is:-



import sqlite3

con = sqlite3.connect('Sequences.db')
cur = con.cursor()
cur.execute('DROP TABLE test2') 
cur.execute('''CREATE TABLE test2 
            (seq_id TEXT, sequence TEXT, qual_score TEXT)''')

f = ('path to file')
motif = '@HWI'
flags = ['+', '<', ',', '?', '>']   

with open(f, 'r') as df:
     data = df.readlines()
     L2 = list()

     for line in data:
         line = line.strip()
         if motif in line:
             L2.append(line)
         elif not any(flag in line for flag in flags):
             L2.append(line)
         else:
             if any(flag in line for flag in flags[1:]):
                 L2.append(line)
                 red = ['green', 'blue', 'happy']
                 cur.executemany('INSERT into test2 VALUES (?,?,?)', red)
                 del L2[:]
                 print 'END'
con.comitt()
con.close()
f.close()

1 个答案:

答案 0 :(得分:0)

知道了!我需要将每行包含在列表内的元组中。

所以,对于最终的代码块,它应该是:

     else:
         if any(flag in line for flag in flags[1:]):
             L2.append(line)
             L2 = tuple(L2)
             L3 = []
             L3.append(L2)
             cur.executemany('INSERT into test2 VALUES (?,?,?)', L3)
             con.commit()
             del L2[:]
             print 'END'