コード例 #1
0
 def createGuild(self, avId, isRetry=False):
     if not self.sqlAvailable:
         return
     
     # Enter a new Guild into the guildinfo table, and a new member into the member table
     try:
         # By giving a guild Id of 0, it will auto-increment to the desired id
         # Name fields are left blank
         cursor = self.db.cursor()
         # construct datetime string
         foo = time.localtime()
         date_time = "%d-%d-%d %d:%d:%d" % (foo[0], foo[1], foo[2], foo[3], foo[4], foo[5])
         cursor.execute("INSERT INTO `guildinfo` VALUES (%s, %s, %s, %s, %s)" , (0, 0, 0, 0, date_time))
         cursor.execute("SELECT LAST_INSERT_ID()")
         guildId = cursor.fetchall()[0][0]
         self.addMember(guildId, avId, 3)
         self.db.commit()
     except _mysql_exceptions.OperationalError as e:
         if isRetry:
             raise e
         else:
             self.reconnect()
             self.createGuild(avId,True)
     except _mysql_exceptions.IntegrityError as e:
         self.notify.warning("IntegrityError creating new guild for avId %s: %s.  Rolling back." % (avId,e))
         from direct.showbase import PythonUtil
         self.notify.warning(str(PythonUtil.StackTrace()))
         self.db.rollback()
コード例 #2
0
    def addMember(self, guildId, avId, rank):
        if not self.sqlAvailable:
            return "Guild DB Unavailable"

        if (not self.verifyGuild(guildId)):
            return 0

        # Insert new member into list
        try:
            # All new members start at rank 1
            cursor = self.db.cursor()
            cursor.execute("INSERT INTO `member` VALUES (%s, %s, %s)",
                           (guildId, avId, rank))
            self.db.commit()
        except MySQLdb.OperationalError as e:
            self.reconnect()
            print("GuildDB::addMember - reconnect")
            self.addMember(guildId, avId, rank)
            return
        except MySQLdb.IntegrityError as e:
            self.notify.warning(
                "IntegrityError adding avId %s to guild %s: %s.  Rolling back."
                % (avId, guildId, e))
            from direct.showbase import PythonUtil
            self.notify.warning(str(PythonUtil.StackTrace()))
            self.db.rollback()
コード例 #3
0
            cursor.execute("SELECT LAST_INSERT_ID()")
            guildId = cursor.fetchall()[0][0]
            self.addMember(guildId, avId, 3)
            self.db.commit()
        except _mysql_exceptions.OperationalError, e:
            if isRetry:
                raise e
            else:
                self.reconnect()
                self.createGuild(avId, True)
        except _mysql_exceptions.IntegrityError, e:
            self.notify.warning(
                "IntegrityError creating new guild for avId %s: %s.  Rolling back."
                % (avId, e))
            from direct.showbase import PythonUtil
            self.notify.warning(str(PythonUtil.StackTrace()))
            self.db.rollback()

    def memberCount(self, guildId):
        if not self.sqlAvailable:
            print "Guild DB Unavailable"
            return 99999

        try:
            cursor = self.db.cursor()
            cursor.execute("SELECT * FROM `member` where `gid` = %s", guildId)
            stuff = cursor.fetchall()
            return len(stuff)
        except _mysql_exceptions.OperationalError, e:
            self.reconnect()
            return self.memberCount(guildId)