+ def query(self, *args, **kwargs):
+ if 'noretry' in kwargs:
+ noretry = kwargs['noretry']
+ del kwargs['noretry']
+ else:
+ noretry = False
+
+ self.log("[SQL]", "?", "query(%s, %s)" % (', '.join([repr(i) for i in args]), ', '.join([str(key)+"="+repr(kwargs[key]) for key in kwargs])))
+ try:
+ curs = self.db.cursor()
+ res = curs.execute(*args, **kwargs)
+ if res:
+ return curs
+ else:
+ return res
+ except MySQLdb.DataError as e:
+ self.log("[SQL]", ".", "MySQL DataError: %r" % (e))
+ return False
+ except MySQLdb.MySQLError as e:
+ self.log("[SQL]", "!", "MySQL error! %r" % (e))
+ if not noretry:
+ dbsetup()
+ return self.query(*args, noretry=True, **kwargs)
+ else:
+ raise e
+
+ def querycb(self, cb, *args, **kwargs):
+ def run_query():
+ cb(self.query(*args, **kwargs))
+ threading.Thread(target=run_query).start()
+
+ def newbot(self, nick, user, bind, authname, authpass, server, port, realname):