A Python nyelv nem támogatja az interfész használatát, de használhatunk egy interface modult.
class Employee: def __init__(self, id, name, city, salary): self.id = id self.name = name self.city = city self.salary = salary
from interface import Interface class iDatabase(Interface): def connectDb(self): pass
from interface import implements from iDatabase import iDatabase from mariadb import connect, Error import sys class Mariadb(implements(iDatabase)): def tryConnectDb(self): print('Működik') config = { 'host': 'localhost', 'user': 'feherbt', 'password': 'titok' } conn = connect(**config, database='feherbt') return conn def connectDb(self): try: conn = self.tryConnectDb() except Error as err: print('Hiba! A kapcsolódás sikertelen!') print(err, file=sys.stderr) return conn if __name__ == '__main__': Mariadb().connectDb()
A „database: iDatabase” állítás jelzi, hogy iDatabase paramétert várunk, de maga a Python nyelv nem követeli meg, hogy ténylegesen azt adjuk át paraméterként a hívás helyén.
from iDatabase import iDatabase from Mariadb import Mariadb from Employee import Employee class DataManager: def __init__(self, database: iDatabase): self.database = database def getEmployees(self): conn = self.database.connectDb() cur = conn.cursor() sql = 'select * from employees' cur.execute(sql) employeeList = [] for (id, name, city, salary) in cur: employee = Employee(id, name, city, salary) employeeList.append(employee) return employeeList def insertEmployee(self, employee: Employee): conn = self.database.connectDb() cur = conn.cursor() sql = """ insert into employees (name, city, salary) values (?, ?, ?) """ values = (employee.name, employee.city, employee.salary) cur.execute(sql, values) conn.commit() conn.close() if __name__ == '__main__': data_manager = DataManager(Mariadb())
from DataManager import DataManager from Mariadb import Mariadb from Employee import Employee data_manager = DataManager(Mariadb()) employee = Employee(0, 'Reke Imre', 'Szeged', 4740000) data_manager.insertEmployee(employee) employees = data_manager.getEmployees() for employee in employees: print(employee.name)