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

Python SQLite3 error with bindings; File not being processed line by line as specified

我正在尝试使用 Python 代码填充 SQLite3 数据库,但出现错误。下面是代码片段。当我运行它并尝试提交我的列表 'L2' 时,我得到

"Error Incorrect number of bindings supplied. The current statement uses 3, and there are 10 supplied."

因此,当我将其更改为包含一个名为 'red' 的列表(在下面的代码中)时,我仍然遇到错误...这次 "current statement uses 3, and there are 2 supplied." 我可以更改列表的内容 'red' 到我想要的任何内容,它仍然有同样的错误!!

所以,显然 'binding' 的识别以及如何计算它们存在问题。

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()

知道了!我需要每一行都包含在一个元组中,在一个列表中。

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

     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'