DB 백엔드로 MongoEngine 및 Peewee를 사용하는 다음 예제 코드가 있습니다.두 데이터베이스 백엔드를 지원하고 내 코드를 DRY 상태로 유지하는 가장 비범 한 방법/트릭은 무엇입니까?
import mongoengine, peewee
from mongomodels import *
from mysqlmodels import *
class Parser(object):
def __init__(self, line, dbBackend):
if dbBackend in ["MongoDB","MySQL"]:
self.line = line
self.DB = dbBackend
user = self.createUser()
car = self.createCar(user)
parking = self.createParking(car)
else:
raise Exception()
def createUser(self):
if self.DB == "MongoDB":
newUserID = self._createMongoUser(self.line['firstname'], self.line['lastname'], '...')
else:
newUserID = self._createMySQLUser(self.line['firstname'], self.line['lastname'], '...')
return newUserID
def _createMongoUser(self, firstname, lastname, '...'):
try:
_user = MongoUserModel.objects.get(firstname=firstname, lastname=lastname)
except mongoengine.errors.DoesNotExist as e:
user = MongoUserModel(firstname=firstname, password)
_user = user.save()
finally:
return _user
def _createMySQLUser(self, firstname, lastname, '...'):
try:
_user = MySQLUserModel.get(MySQLUserModel.fistname == firstname, MySQLUserModel.lastname == lastname)
except Exception as e:
user = MySQLUserModel(fistname=fistname, lastname=lastname)
_user = user.save()
finally:
return _user
def createCar(self, user):
pass
def createParking(self, car):
pass
내 코드 DRY를 유지하고 내 모델을 만드는 두 가지 방법을 재정의하지 않으려면 모범 사례/트릭/모듈이 있습니까?
PHP에서 PDO처럼 새로운 추상화 클래스 'UserModel'을 만들 수 있습니까?
부끄러움이 주위에 더 이상 토론이 없습니다. 흥미로운 질문입니다. –