2014-04-10 101 views
4

我正在使用MySQLdb模塊插入到我的數據庫中。我有以下代碼Python TypeError - MySQL executemany

 sqlString = """INSERT INTO PERFORMER (PERFORMER) 
        VALUES (%s) 
        WHERE NOT EXISTS (SELECT * FROM PERFORMER P 
             WHERE P.PERFORMER = %s)""" 
     data = [(c, c) for c in self._performers] 
     self._cursor.executemany(sqlString, data) 

基本上我想從self._performers插入項(這僅僅是名稱的列表)是不是已經在PERFORMERS表。但我發現了以下類型錯誤

TypeError: not all arguments converted during string formatting 

完整跟蹤

Traceback (most recent call last): 
File "tvGuide.py", line 437, in <module> 
     processing.UpdatePerformers() 
File "tvGuide.py", line 307, in UpdatePerformers 
     self._cursor.executemany(sqlString, data) 
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 246, in executemany 
     self.errorhandler(self, TypeError, msg) 
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler 
     raise errorclass, errorvalue TypeError: not all arguments converted during string formatting 

的self._performers名單很長,但這裏的第一幾個條目

['Lucy Alexander', 'Martin Roberts', 'Alistair Appleton', 'Zak Bagans', 'Aaron Goodwin', 'Nick Groff', 'John Zaffis', 'Ellen Pompeo', 'Patrick Dempsey', 
+0

我們可以請**有完整的追溯**嗎?它有助於更​​好地定位錯誤的來源。 –

+0

@AlexThornton對不起,我現在加入 – PDStat

+0

你能打印'self._performers'的內容嗎? –

回答

0

的樣本+ 1到Nacho,TypeError有些重新改變,使用帶有VALUES子句的WHERE是非法的。