IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 6, 2011, 12:43:46 PM (15 years ago)
Author:
rhenders
Message:

added methods to execute SQL queries so that stmt objects can be closed neatly; added methods to get and kill last connection to database

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippToPsps/jython/mysql.py

    r31401 r31470  
    3737        self.url = "jdbc:mysql://"+self.dbHost+"/"+self.dbName+"?user="+self.dbUser+"&password="+self.dbPass
    3838        self.con = DriverManager.getConnection(self.url)
    39         self.stmt = self.con.createStatement()
     39        self.connectionID = self.getLastConnectionID()
     40        self.logger.info("MySQL connection to %s with ID %d" % (dbType, self.connectionID))
     41
     42        #self.stmt = self.con.createStatement()
     43
     44
     45    '''
     46    Disconnect from database
     47    '''
     48    def disconnect(self):
     49        self.con.close()
    4050
    4151    '''
     
    4555
    4656        self.logger.debug("MySql destructor")
    47         self.stmt.close()
    48         self.con.close()
     57        self.disconnect()
     58
     59    '''
     60    Kills the last connection ID, so long as it's not THIS connection ID
     61    '''
     62    def killLastConnectionID(self):
     63   
     64        connectionID = self.getLastConnectionID()
     65        if connectionID == self.connectionID:
     66            self.logger.error("NOT going to kill THIS connection ID")
     67            return
     68
     69        sql = "KILL %d" % connectionID
     70        self.execute(sql)
     71
     72    '''
     73    Gets the last connection ID
     74    '''
     75    def getLastConnectionID(self):
     76
     77        sql = "SELECT ID \
     78               FROM INFORMATION_SCHEMA.PROCESSLIST \
     79               WHERE DB='" + self.dbName + "' \
     80               ORDER BY ID"
     81        rs = self.executeQuery(sql)
     82        rs.last()
     83        return rs.getInt(1)
    4984
    5085    '''
     
    5489
    5590        sql = "UPDATE " + table + " SET " + column + " = " + value
    56         self.stmt.execute(sql)
     91        self.execute(sql)
    5792
    5893    '''
     
    6297
    6398        sql = "DROP TABLE " + table
    64         try: self.stmt.execute(sql)
     99        try: self.execute(sql)
    65100        except: return
    66101
     
    74109        sql = "ALTER TABLE " + table + " ADD UNIQUE (" + column + ")"
    75110        try:
    76             self.stmt.execute(sql)
     111            self.execute(sql)
    77112        except: pass
    78113            #self.logger.warn("Index already in place on '" + column + "' for table '" + table + "'")
     
    82117    def createIndex(self, table, column):
    83118
    84         self.logger.debug("Creating index on column '"+column+"' for table '"+table+"'")
     119        #self.logger.debug("Creating index on column '"+column+"' for table '"+table+"'")
    85120
    86121        sql = "CREATE INDEX "+table+"_"+column+"_index ON "+table+" ("+column+")"
    87122        try:
    88             self.stmt.execute(sql)
     123            self.execute(sql)
    89124        except: pass
    90125            #self.logger.warn("Index already in place on '" + column + "' for table '" + table + "'")
     126    '''
     127    TODO
     128    '''
     129    def execute(self, sql):
     130
     131        stmt = self.con.createStatement()
     132        stmt.execute(sql)
     133        stmt.close()
     134
     135    '''
     136    TODO
     137    '''
     138    def executeQuery(self, sql):
     139
     140        stmt = self.con.createStatement()
     141        rs = stmt.executeQuery(sql)
     142        #stmt.close()
     143        return rs
    91144
    92145    '''
     
    96149
    97150       sql = "SHOW COLUMNS FROM " + tableName
    98        rs = self.stmt.executeQuery(sql)
     151       rs = self.executeQuery(sql)
    99152       columns = []
    100153       while (rs.next()): columns.append(rs.getString(1))
     
    109162
    110163      sql = "UPDATE " + tableName + " SET " + column + " = " + sub + " WHERE " + column + " IS NULL"
    111       self.stmt.execute(sql)
     164      self.execute(sql)
    112165
    113166    '''
     
    123176         
    124177          sql = "UPDATE " + tableName + " SET " + column + " = " + sub + " WHERE " + column + " IS NULL"
    125           self.stmt.execute(sql)
     178          self.execute(sql)
    126179
    127180    '''
     
    131184
    132185        sql = "SELECT COUNT(*) FROM " + tableName + " WHERE " + columnName + " = " + value
    133         rs = self.stmt.executeQuery(sql)
     186        rs = self.executeQuery(sql)
    134187        rs.first()
    135         nBadFlux = rs.getInt(1)
    136         self.logger.info("%d NULL %s values in table %s. Deleting." % (nBadFlux, columnName, tableName))
     188        nBad = rs.getInt(1)
     189        self.logger.info("%5d NULL %s values in table %s. Deleting." % (nBad, columnName, tableName))
    137190
    138191        sql="DELETE from " + tableName + " WHERE " + columnName + " = " + value
    139         self.stmt.execute(sql)
     192        self.execute(sql)
    140193
    141194    '''
     
    145198
    146199        sql = "SELECT COUNT(*) FROM " + tableName + " WHERE " + columnName + " IS NULL"
    147         rs = self.stmt.executeQuery(sql)
     200        rs = self.executeQuery(sql)
    148201        rs.first()
    149         nBadFlux = rs.getInt(1)
    150         self.logger.info("%d NULL %s values in table %s. Deleting." % (nBadFlux, columnName, tableName))
     202        nBad = rs.getInt(1)
     203        self.logger.info("%5d NULL %s values in table %s. Deleting." % (nBad, columnName, tableName))
    151204
    152205        sql="DELETE from " + tableName + " WHERE " + columnName + " IS NULL"
    153         self.stmt.execute(sql)
     206        self.execute(sql)
    154207
    155208    '''
     
    160213       # first, count rows
    161214       sql = "SELECT COUNT(*) FROM " + tableName
    162        rs = self.stmt.executeQuery(sql)
     215       rs = self.executeQuery(sql)
    163216       rs.first()
    164217       numRows = rs.getInt(1)
     
    175228         
    176229          sql = "SELECT COUNT(*) FROM " + tableName + " WHERE " + column + " IS NULL"
    177           rs = self.stmt.executeQuery(sql)
     230          rs = self.executeQuery(sql)
    178231          rs.first()
    179232          if rs.getInt(1) == numRows:
     
    191244        sql = "SELECT COUNT(*) FROM " + table
    192245        try:
    193             rs = self.stmt.executeQuery(sql) 
     246            rs = self.executeQuery(sql) 
    194247            rs.first()
    195248            return rs.getInt(1)
Note: See TracChangeset for help on using the changeset viewer.