Ulrich Carmesin
2 years ago
5 changed files with 138 additions and 11 deletions
@ -0,0 +1,102 @@ |
|||||
|
#!/usr/bin/python |
||||
|
# -*- coding: utf-8 -*- |
||||
|
# --------------------------------------------------------------------------------------------------------- |
||||
|
# Author : Ulrich Carmesin |
||||
|
# Source : gitea.ucarmesin.de |
||||
|
# --------------------------------------------------------------------------------------------------------- |
||||
|
import basic.program |
||||
|
import utils.config_tool |
||||
|
import utils.db_abstract |
||||
|
import mysql.connector |
||||
|
import basic.constants as B |
||||
|
|
||||
|
class DbFcts(utils.db_abstract.DbFcts): |
||||
|
""" |
||||
|
This interface defines each necessary connection to any kind of database. |
||||
|
The specific technique how to connect to the concrete DBMS has to be implemented in the specific tool. |
||||
|
""" |
||||
|
|
||||
|
def __init__(self): |
||||
|
pass |
||||
|
|
||||
|
def selectRows(self, table): |
||||
|
""" method to select rows from a database |
||||
|
statement written in sql """ |
||||
|
tdata = {} |
||||
|
job = basic.program.Job.getInstance() |
||||
|
verify = -1+job.getDebugLevel("db_tool") |
||||
|
cmd = "SELECT * FROM "+table+";" |
||||
|
#mycursor = self.getConnector() |
||||
|
#mycursor.execute(cmd) |
||||
|
#myresult = mycursor.fetchall() |
||||
|
tdata[B.DATA_NODE_HEADER] = [] |
||||
|
for f in self.comp.conf[B.DATA_NODE_DDL][table][B.DATA_NODE_HEADER]: |
||||
|
tdata[B.DATA_NODE_HEADER].append(f) |
||||
|
myresult = [] |
||||
|
for x in myresult: |
||||
|
print(x) |
||||
|
self.comp.m.logInfo(cmd) |
||||
|
return tdata |
||||
|
|
||||
|
def deleteRows(self, table): |
||||
|
""" method to delete rows from a database |
||||
|
statement written in sql """ |
||||
|
job = basic.program.Job.getInstance() |
||||
|
verify = -1+job.getDebugLevel("db_tool") |
||||
|
cmd = "DELETE FROM "+table+";" |
||||
|
self.comp.m.logInfo(cmd) |
||||
|
|
||||
|
def updateRows(self, statement): |
||||
|
""" method to delete rows from a database |
||||
|
statement written in sql """ |
||||
|
raise Exception(B.EXCEPT_NOT_IMPLEMENT) |
||||
|
|
||||
|
def insertRows(self, table, rows): |
||||
|
""" method to insert rows into a database |
||||
|
the rows will be interpreted by the ddl of the component |
||||
|
""" |
||||
|
job = basic.program.Job.getInstance() |
||||
|
verify = -1+job.getDebugLevel("db_tool") |
||||
|
cmd = "INSERT INTO "+table+";" |
||||
|
header = "" |
||||
|
for h in self.comp.conf[B.DATA_NODE_DDL][table][B.DATA_NODE_HEADER]: |
||||
|
print(h) |
||||
|
header += ", "+h |
||||
|
cmd += " (" + header[1:]+" ) " |
||||
|
rowvalues = "" |
||||
|
for r in rows: |
||||
|
print("r-----------------") |
||||
|
print(r) |
||||
|
rowvalues = "" |
||||
|
cmd += "\n ( " |
||||
|
for h in self.comp.conf[B.DATA_NODE_DDL][table][B.DATA_NODE_HEADER]: |
||||
|
print("h "+h) |
||||
|
if (h in r): |
||||
|
rowvalues += ", "+self.getDbValue(self.comp.conf[B.DATA_NODE_DDL][table][B.DATA_NODE_DATA][h], r[h]) |
||||
|
else: |
||||
|
rowvalues += ", "+self.getDbValue(self.comp.conf[B.DATA_NODE_DDL][table][B.DATA_NODE_DATA][h], "") |
||||
|
print("rv " + rowvalues) |
||||
|
cmd += rowvalues[1:]+" )," |
||||
|
cmd = cmd[0:-1]+";" |
||||
|
self.comp.m.logInfo(cmd) |
||||
|
|
||||
|
def getConnector(self): |
||||
|
""" add-on-method to get the connector |
||||
|
this method should only called by the class itself """ |
||||
|
job = basic.program.Job.getInstance() |
||||
|
mydb = mysql.connector.connect( |
||||
|
host = "localhost", |
||||
|
user = "datest", |
||||
|
password = "Advent!2021", |
||||
|
database = "datest" |
||||
|
) |
||||
|
return mysql |
||||
|
|
||||
|
@staticmethod |
||||
|
def execStatement(self, comp, conn, statement): |
||||
|
""" add-on-method to execute the statement |
||||
|
this method should only called by the class itself """ |
||||
|
raise Exception(B.EXCEPT_NOT_IMPLEMENT) |
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue