# Copyright 2012 Citrix Systems, Inc. Licensed under the # Apache License, Version 2.0 (the "License"); you may not use this # file except in compliance with the License. Citrix Systems, Inc. # reserves all rights not expressly granted by the License. # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Automatically generated by addcopyright.py at 04/03/2012 import MySQLdb import os from utilities import bash from cloudException import CloudRuntimeException import sys class Database: """Database connection""" def __init__(self, username, password=None, host='localhost', port='3306', db="cloud"): self.host = host self.username = username self.password = password self.port = port self.db = db def execute(self, statement): txn = None try: if self.password is not None: txn = MySQLdb.Connect(host=self.host, user=self.username, passwd=self.password, db=self.db) else: txn = MySQLdb.Connect(host=self.host, user=self.username, db=self.db) cursor = txn.cursor() cursor.execute(statement) cursor.close() txn.commit() if txn is not None: try: txn.close() except: pass except: if txn is not None: try: txn.close() except: pass raise CloudRuntimeException("Failed to execute:%s"%statement) def testConnection(self): try: if self.password is not None: db = MySQLdb.Connect(host=self.host, user=self.username, passwd=self.password, db=self.db) else: db = MySQLdb.Connect(host=self.host, user=self.username, db=self.db) return True except: raise CloudRuntimeException("Failed to Connect to DB") def executeFromFile(self, file): if not os.path.exists(file): return False cmdLine = "mysql --host=" + self.host + " --port=" + str(self.port) + " --user=" + self.username if self.password is not None: cmdLine += " --password=" + self.password cmdLine += " < " + file try: bash(cmdLine) except: raise CloudRuntimeException("Failed to execute " + cmdLine)