将迭代器值传递给Sqlite3,就像python中select子句的条件一样

时间:2015-05-20 17:38:22

标签: python sqlite ipython

我的代码如下

inPath = 'D:\\maddy'
outPath = 'D:\\maddy\\corpora'
fileName = 'genrelist.txt'
with sqlite3.connect('database.db') as connection,open(os.path.join(inPath, fileName), "r") as inputFile:
    myFileReader = csv.reader(inputFile)
    c = connection.cursor()
    for genre in myFileReader:
        '''store output in files named after each genre'''
        with open(os.path.join(outPath,'%s.txt' %genre[0]), "w") as outputFile:
            my_file_writer = csv.writer(outputFile,delimiter=",",quotechar="'")  
            c.execute("SELECT Plot FROM Movies WHERE Genre LIKE '%genre%' " )
            my_file_writer.writerows(c.fetchall())

这里的genrelist包含各种类型的名称,如

动作 冒险 犯罪 戏剧 。 。 。

当我尝试使用类型读取文件迭代循环时,我无法将此值传递给SELECT子句中的LIKE条件,因为它将其视为字符串而不是动态值变量。 / p>

请你帮我解决这个问题。

谢谢, 麦迪

1 个答案:

答案 0 :(得分:0)

将变量传递给sql的方法是:

 c.execute("SELECT Plot FROM Movies WHERE Genre LIKE ? ",('%'+genre+'%',) )