Mysql read library

This commit is contained in:
Simon 2020-09-29 13:42:07 +01:00
parent b63bf51ae8
commit b79870a3cd

View File

@ -1,81 +1,81 @@
import mysql.connector
from mysql.connector import errorcode
class useMYSQL:
def __init__(self, server,user,password,db):
#Init new object
def __init__(self, server,user,password,database):
self.server = server
self.user = user
self.password = password
self.db = db
self.database = database
#Connect
def con(self):
try:
self.db = mysql.connector.connect(
host=server,
user=user,
password=password,
database=db
host=self.server,
user=self.user,
password=self.password,
database=self.database
)
except:
return False
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
return [False,'Username or password error']
elif err.errno == errorcode.ER_BAD_DB_ERROR:
return [False,'DB Does Not Exist']
else:
return [False,err]
def getConfig(self):
return(True)
#Close DB connection
def close(self):
self.db.close()
#Get config from DB
def getConfig(self):
CONFIG = {}
CONFIG['SYSTEMS'] = {}
_cursor = self.db.cursor()
_cursor.execute = ("SELECT * from repeaters where ENABLED=1")
try:
_cursor.execute("select * from repeaters where ENABLED=1 and MODE='MASTER'")
except mysql.connector.Error as err:
_cursor.close()
return(False)
_res = cursor.fetchall()
for (callsign, mode, enabled, _repeat, max_peers, export_ambe, ip, port, passphrase, group_hangtime, use_acl, reg_acl, sub_acl, tgid_ts1_acl, tgid_ts2_acl, default_ua_timer, single_mode, voice_ident) in _cursor:
print(_res)
CONFIG['SYSTEMS'].update({callsign: {
'MODE': mode,
'ENABLED': bool(enabled),
'REPEAT': bool(_repeat),
'MAX_PEERS': int(max_peers),
'IP': ip,
'PORT': int(port),
'PASSPHRASE': passphrase,
'GROUP_HANGTIME': int(group_hangtime),
'USE_ACL': bool(use_acl),
'REG_ACL': reg_acl,
'SUB_ACL': sub_acl,
'TG1_ACL': tgid_ts1_acl,
'TG2_ACL': tgid_ts2_acl,
'DEFAULT_UA_TIMER': int(default_ua_timer),
'SINGLE_MODE': bool(single_mode),
'VOICE_IDENT': bool(voice_ident)
}})
CONFIG['SYSTEMS'][callsign].update({'PEERS': {}})
#elif config.getboolean(section, 'ENABLED'):
#if config.get(section, 'MODE') == 'PEER':
#CONFIG['SYSTEMS'].update({section: {
#'MODE': config.get(section, 'MODE'),
#'ENABLED': config.getboolean(section, 'ENABLED'),
#'LOOSE': config.getboolean(section, 'LOOSE'),
#'SOCK_ADDR': (gethostbyname(config.get(section, 'IP')), config.getint(section, 'PORT')),
#'IP': gethostbyname(config.get(section, 'IP')),
#'PORT': config.getint(section, 'PORT'),
#'MASTER_SOCKADDR': (gethostbyname(config.get(section, 'MASTER_IP')), config.getint(section, 'MASTER_PORT')),
#'MASTER_IP': gethostbyname(config.get(section, 'MASTER_IP')),
#'MASTER_PORT': config.getint(section, 'MASTER_PORT'),
#'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'),
#'CALLSIGN': bytes(config.get(section, 'CALLSIGN').ljust(8)[:8], 'utf-8'),
#'RADIO_ID': config.getint(section, 'RADIO_ID').to_bytes(4, 'big'),
#'RX_FREQ': bytes(config.get(section, 'RX_FREQ').ljust(9)[:9], 'utf-8'),
#'TX_FREQ': bytes(config.get(section, 'TX_FREQ').ljust(9)[:9], 'utf-8'),
#'TX_POWER': bytes(config.get(section, 'TX_POWER').rjust(2,'0'), 'utf-8'),
#'COLORCODE': bytes(config.get(section, 'COLORCODE').rjust(2,'0'), 'utf-8'),
#'LATITUDE': bytes(config.get(section, 'LATITUDE').ljust(8)[:8], 'utf-8'),
#'LONGITUDE': bytes(config.get(section, 'LONGITUDE').ljust(9)[:9], 'utf-8'),
#'HEIGHT': bytes(config.get(section, 'HEIGHT').rjust(3,'0'), 'utf-8'),
#'LOCATION': bytes(config.get(section, 'LOCATION').ljust(20)[:20], 'utf-8'),
#'DESCRIPTION': bytes(config.get(section, 'DESCRIPTION').ljust(19)[:19], 'utf-8'),
#'SLOTS': bytes(config.get(section, 'SLOTS'), 'utf-8'),
#'URL': bytes(config.get(section, 'URL').ljust(124)[:124], 'utf-8'),
#'SOFTWARE_ID': bytes(config.get(section, 'SOFTWARE_ID').ljust(40)[:40], 'utf-8'),
#'PACKAGE_ID': bytes(config.get(section, 'PACKAGE_ID').ljust(40)[:40], 'utf-8'),
#'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'),
#'OPTIONS': bytes(config.get(section, 'OPTIONS'), 'utf-8'),
#'USE_ACL': config.getboolean(section, 'USE_ACL'),
#'SUB_ACL': config.get(section, 'SUB_ACL'),
#'TG1_ACL': config.get(section, 'TGID_TS1_ACL'),
#'TG2_ACL': config.get(section, 'TGID_TS2_ACL')
#}})
#CONFIG['SYSTEMS'][section].update({'STATS': {
#'CONNECTION': 'NO', # NO, RTPL_SENT, AUTHENTICATED, CONFIG-SENT, YES
#'CONNECTED': None,
#'PINGS_SENT': 0,
#'PINGS_ACKD': 0,
#'NUM_OUTSTANDING': 0,
#'PING_OUTSTANDING': False,
#'LAST_PING_TX_TIME': 0,
#'LAST_PING_ACK_TIME': 0,
#}})
return(CONFIG)
#For testing
if __name__ == '__main__':
sql = useMYSQL("87.117.229.39","hblink","project999","hblink")
sql.getConfig()
sql = useMYSQL("ip","user","pass","db")
sql.con()
print( sql.getConfig())