j'ai un bug que je ne sais pas comment réparer ou même reproduire:Python, MySQL et une erreur bizarre
query = "SELECT id, name FROM names ORDER BY id"
results = database.execute(query)
où la classe Database
contient:
def execute(self, query):
cursor = self.db.cursor()
try:
cursor.execute(query)
return cursor.fetchall()
except:
import traceback
traceback.print_exc(file=debugFile)
return []
Voici comment J'ouvre la connexion de base de données:
self.db = MySQLdb.connect(
host=mysqlHost,
user=mysqlUser,
passwd=mysqlPasswd,
db=mysqlDB
)
C'est le stacktrace de l'erreur:
File "foo.py", line 169, in application results = config.db.execute(query)
File "Database.py", line 52, in execute
return cursor.fetchall()
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 340, in fetchall
self._check_executed()
File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 70, in _check_executed
self.errorhandler(self, ProgrammingError, "execute() first")
File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaulterrorhandler
raise errorclass, errorvalue
ProgrammingError: execute() first
Avez-vous une idée de pourquoi cela se produit et comment puis-je le réparer? J'ai cherché sur Internet et j'ai découvert que la raison pourrait être d'avoir 2 curseurs, mais j'en ai seulement un.
Vous devez toujours prendre des erreurs spécifiques; N'utilisez pas 'sauf:'. Cela va attraper des choses comme KeyboardInterrupt. – katrielalex