#! /usr/bin/env python """ usage: %(progname)s [args] """ # import startscript; startscript.init(__name__) import os, sys, string, time, getopt from log import * import odb import MySQLdb class Database(odb.Database): def __init__(self,db, debug=0): odb.Database.__init__(self, db, debug=debug) self.SQLError = MySQLdb.Error def escape(self,str): if str is None: return None return MySQLdb.escape_string(str) def listTables(self, cursor=None): if cursor is None: cursor = self.defaultCursor() cursor.execute("show tables") rows = cursor.fetchall() tables = [] for row in rows: tables.append(row[0]) return tables def listIndices(self, cursor=None): return [] def listFieldsDict(self, table_name, cursor=None): if cursor is None: cursor = self.defaultCursor() sql = "show columns from %s" % table_name cursor.execute(sql) rows = cursor.fetchall() columns = {} for row in rows: colname = row[0] columns[colname] = row return columns def alterTableToMatch(self): invalidAppCols, invalidDBCols = self.checkTable() if not invalidAppCols: return defs = [] for colname in invalidAppCols.keys(): col = self.getColumnDef(colname) colname = col[0] coltype = col[1] options = col[2] defs.append(self.colTypeToSQLType(colname, coltype, options)) defs = string.join(defs, ", ") sql = "alter table %s add column " % self.getTableName() sql = sql + "(" + defs + ")" print sql cur = self.db.defaultCursor() cur.execute(sql)