Sqlite在python

时间:2015-10-12 00:01:30

标签: python sqlite

我正在尝试捕获可能的错误并将调用捆绑在1个函数中。 我的问题是,我无法在游标的执行功能中使用* args参数。

def execute_query(self, query, *args, **kwargs):
    """
    execute the query in the database with synchronized blocks

    :param query:
    :return:
    """
    result = kwargs.pop("result", None)
    try:
        self.lock.acquire(True)
        if args:
            print "args", args
            self.cursor.execute(query, args)
        else:
            self.cursor.execute(query)
        if result:
            return self.cursor.fetchall()
    except sqlite3.ProgrammingError as err:
        self.logger.warn("An error occured: {0:s}".format(err))
    finally:
        self.lock.release()

我这样称呼函数:

    self.execute_query(u"DELETE FROM DownloadQueue WHERE path=? AND url=?", path, url, result=False)

在印刷品中我得到以下结果:

args (u'page_001.jpg', u'http://www.google.de')

后面跟着错误:

2015-10-12 01:47:17,543 [MainThread] [WARNI]  An error occured: Incorrect number of bindings supplied. The current statement uses 2, and there are 0 supplied.

但如果我直接在控制台中使用这个打印的参数,它可以正常工作:

>>> cursor.execute(u"DELETE FROM DownloadQueue WHERE path=? AND url=?", (u'page_001.jpg', u'http://www.google.de'))

为什么我确实收到此错误,即使参数应该完全相同?我该如何防止这种情况?

编辑: 代码工作正常,不知何故我的IDE缓存旧代码,否则我无法解释如何使用此函数调用,但重新启动我的IDE后,代码工作正常......

亲切的问候

0 个答案:

没有答案