数据访问层 DAL/DAO - 访问数据库 标准:数据库表》类 mysql_sql.py class UserInfo: def add(..) def remove(..) def fetch(..) def fetchall(..) class UserInfo: def add(..) def remove(..) def fetch(..) def fetchall(..) mysql_orm.py class UserInfo: def add(..) def remove(..) def fetch(..) def fetchall(..) class UserInfo: def add(..) def remove(..) def fetch(..) def fetchall(..) oracle_sql.py class UserInfo: def add(..) def remove(..) def fetch(..) def fetchall(..) class UserInfo: def add(..) def remove(..) def fetch(..) def fetchall(..) 业务处理层 BLL/Sevice factory读取配置文件 mysql_sql obj = UserInfo() obj.add(...) - 检查用户是否已经存在 - 存在,已经 - 注册 account: 用户表操作 验证 订单查询 account: 用户表操作 验证 订单查询 UI表示层 UI/UI M V C controller
测试:
dao service web model views controllers app.py
程序说明:
1 Mapper.static_mapper() #模块的方法执行。DaoFacotory.NewsDaoFactory.set_dao(PyMySQL.NewsDao()) ,定义了单独的表访问数据的方式
2 看一DaoFactory 调用静态方法 形似静态字段调用 设置新的查询方式。默认是orm现在改成pymysql
class NewsDaoFactory:
__dao = PyORM.NewsDao()
@staticmethod
def set_dao(dao):
NewsDaoFactory.__dao = dao
@staticmethod
def get_dao():
return NewsDaoFactory.__dao
3 看看service怎么调的呢?
def login(username, password):
user_info_dao = UserInfoDaoFactory.get_dao() # 现获取
ret = user_info_dao.fetch_single_by_user_pwd(username, password)
if ret:
pass
else:
pass
流程都知道了吧
DAO
#!/usr/bin/env python # -*- coding:utf-8 -*- from Dao import PyORM class UserInfoDaoFactory: __dao = PyORM.UserInfoDao() @staticmethod def set_dao(dao): UserInfoDaoFactory.__dao = dao @staticmethod def get_dao(): return UserInfoDaoFactory.__dao class NewsDaoFactory: __dao = PyORM.NewsDao() @staticmethod def set_dao(dao): NewsDaoFactory.__dao = dao @staticmethod def get_dao(): return NewsDaoFactory.__dao