Public Member Functions | |
def | __init__ |
def | IsOK |
def | GetResults |
def | Query |
def | SetAccessString |
def | TableExists |
Public Attributes | |
parent | |
Initialise state. | |
debug | |
access_string | |
public_access_string | |
results_file | |
results |
A simple interface to a MySQL Database. Makes no assumption about the tables that the database holds.
Definition at line 93 of file database_updater.py.
def database_updater::DatabaseInterface::__init__ | ( | self, | ||
parent, | ||||
testConnection = 1 | ||||
) |
Definition at line 98 of file database_updater.py.
00098 : 00099 00100 ## Initialise state 00101 00102 self.parent = parent # The parent DatabaseUpdater 00103 self.debug = parent.debug 00104 self.access_string = "" # Access string needed for command: mysql <access string> --execute=<command> 00105 self.SetAccessString() 00106 self.public_access_string = re.compile(r'--password=\S+').sub('--password=XXX',self.access_string) 00107 self.results_file = '/tmp/mysql_results_%d.tmp' % os.getpid() 00108 self.results = [] 00109 00110 if testConnection: 00111 if self.IsOK(): print 'DatabaseInterface initialising with account info: ' + self.public_access_string 00112 else: print 'MySQL DBI connection failed with account info: ' + self.public_access_string 00113 00114 #--------------------------------------------- DatabaseInterface -------------------------------------------------- 00115 def IsOK(self):
def database_updater::DatabaseInterface::GetResults | ( | self | ) |
Return the results from the last query.
Definition at line 124 of file database_updater.py.
def database_updater::DatabaseInterface::IsOK | ( | self | ) |
Return True if able to execute queries.
Definition at line 116 of file database_updater.py.
00116 : 00117 """Return True if able to execute queries.""" 00118 if not self.access_string: return False 00119 #See if we can run a dummy statement 00120 return self.Query('select 1',False) 00121 00122 #--------------------------------------------- DatabaseInterface -------------------------------------------------- 00123 def GetResults(self):
def database_updater::DatabaseInterface::Query | ( | self, | ||
sql, | ||||
log_error = True | ||||
) |
Apply query and return True if successful. To get the results themselves call GetResults() Unless log_error is False, errors are logged.
Definition at line 130 of file database_updater.py.
00130 : 00131 """Apply query and return True if successful. To get the results themselves call GetResults() 00132 00133 Unless log_error is False, errors are logged.""" 00134 00135 self.results = [] 00136 cmd = 'mysql %s --execute="%s" > %s 2>&1' % (self.access_string,sql,self.results_file) 00137 if self.debug: print 'About to execute: ' + cmd 00138 exit_code = os.system(cmd) 00139 if os.path.isfile(self.results_file): 00140 log_results = exit_code and log_error 00141 if log_results: print 'SQL query failed with error code %d' % exit_code 00142 file_results = open(self.results_file) 00143 for line in file_results: 00144 line = line.strip() 00145 if log_results: print ' SQL log:' + line 00146 self.results.append(line) 00147 os.remove(self.results_file) 00148 return exit_code == 0 00149 00150 #--------------------------------------------- DatabaseInterface -------------------------------------------------- 00151 def SetAccessString(self):
def database_updater::DatabaseInterface::SetAccessString | ( | self | ) |
Prepare self.SetAccessString from TSQL environment.
Definition at line 152 of file database_updater.py.
00152 : 00153 """Prepare self.SetAccessString from TSQL environment.""" 00154 self.access_string = "" 00155 env_url = os.environ.get('SK_TSQL_URL') 00156 env_user = os.environ.get('SK_TSQL_USER') 00157 env_pswd = os.environ.get('SK_TSQL_PSWD') 00158 if not env_url or not env_user or not env_pswd: 00159 print 'Cannot connect to database. One or more of the environmental variables:-' 00160 print ' SK_TSQL_URL, SK_TSQL_USER or SK_TSQL_PSWD' 00161 print 'is not defined.' 00162 return 00163 # Collect server and db and port from from first element of SK_TSQL_URL. 00164 mo = re.search(r'//(.*?)/(\w+)',env_url) 00165 if not mo: 00166 print 'Cannot parse the environmental variables SK_TSQL_URL' 00167 return 00168 (server,db) = mo.groups() 00169 port_opt = '' 00170 mo = re.search(r'^(.*):(\d+)$',server) 00171 if mo: 00172 server = mo.group(1) 00173 port_opt = '--port=' + mo.group(2) 00174 # Collect user from first element of SK_TSQL_USER 00175 user = env_user 00176 mo = re.search(r'(.*?);',env_user) 00177 if mo: user = mo.group(1) 00178 # Collect pswd from first element of SK_TSQL_PSWD 00179 pswd = env_pswd 00180 mo = re.search(r'(.*?);',env_pswd) 00181 if mo: pswd = mo.group(1) 00182 pswd_opt = '--password=' + pswd 00183 if pswd == '\\0': pswd_opt = '' 00184 self.access_string = '%s --host %s %s --user=%s %s' % (db,server,port_opt,user,pswd_opt) 00185 00186 #--------------------------------------------- DatabaseInterface -------------------------------------------------- 00187 def TableExists(self,table_name):
def database_updater::DatabaseInterface::TableExists | ( | self, | ||
table_name | ||||
) |
Return True if table exists.
Definition at line 188 of file database_updater.py.
00188 : 00189 """Return True if table exists.""" 00190 return self.Query('describe ' + table_name,False) 00191 00192 #--------------------------------------------- TableUpdate -------------------------------------------------- 00193 #--------------------------------------------- TableUpdate -------------------------------------------------- 00194 #--------------------------------------------- TableUpdate -------------------------------------------------- 00195 class TableUpdate :
Definition at line 104 of file database_updater.py.
Definition at line 103 of file database_updater.py.
Initialise state.
Definition at line 102 of file database_updater.py.
Definition at line 106 of file database_updater.py.
Definition at line 108 of file database_updater.py.
Definition at line 107 of file database_updater.py.