在Python的代码编写中,有一个简单的架构,即三层架构,其就是为了使程序达到高内聚低耦合。现在为了学习机器学习,对Python进行简单的学习,此博客作为学习的记录,如有错误,敬请指出。

三层架构分为:表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)

表现层:即UI层,程序运行的入口,如果程序包括界面,其界面就是放在这一层中,直接调用业务逻辑层中封装好的方法。

业务逻辑层:完成程序的业务逻辑,对数据访问层进行调用,将从数据访问层中获取到的数据反馈给表现层。

数据访问层:直接操作数据库,对表进行增、删、改、查,其一般一个表对应一个程序文件。

三层架构的数据流向如下图所示:

注意:一般表示层不会跨过业务逻辑层去访问数据访问层。

三层架构的基本实现:

源代码:

ps:使用到的数据库表结构如下图所示

index.py(表现层)

'''
Created on 2019年7月8日@author: Administrator
'''# 主文件,程序进来就执行的文件
from model.userinfo import UserInfodef main():username = input("username:")pwd = input("password:")userinfo = UserInfo()result = userinfo.Check(username, pwd)if result is None:print("failed")return;else:print("success")return resultif __name__ == "__main__":'''helper = h.MysqlHelper()sql = "select * from userinfo where user <> %s"print(helper.Get_dict(sql, "ddd"))'''main()

utility(业务逻辑层):sql_helper.py

'''
Created on 2019年7月8日@author: Administrator
'''import pymysql
from two import confclass MysqlHelper(object):def __init__(self):self.__conn_dict = conf.conn_dict # 为conf中定义的一个字典def Get_dict(self,sql,params):conn = pymysql.connect(**self.__conn_dict ) # connect the databasecursor = conn.cursor(cursor=pymysql.cursors.DictCursor)cursor.execute(sql,params)data = cursor.fetchall()cursor.close()conn.close()return datadef Get_one(self,sql,params):conn = pymysql.connect(**self.__conn_dict) # connect the databasecursor = conn.cursor(cursor=pymysql.cursors.DictCursor)cursor.execute(sql,params)data = cursor.fetchone()cursor.close()conn.close()return data

model(数据访问层):userinfo.py

'''
Created on 2019年7月8日@author: Administrator
'''
from utility.sql_helper import MysqlHelper class UserInfo(object):def __init__(self):self.__helper = MysqlHelper()def getOne(self,name):sql = "select * from userinfo user = %s;"params = (name,)return self.__helper.Get_one(sql, params)def Check(self,username,pwd):sql = " select * from userinfo where user = %s and pwd = %s;" params = (username,pwd)return self.__helper.Get_one(sql, params)

其他注意:

def t1(*a):t3(*a)def t2(**k):t3(**k)def t3(a, b):print(a,b)t1(1,2)
t2(a=1,b=2)

Python的三层架构(基础篇)相关推荐

  1. 【JAVA核心知识】29:MySQL架构基础篇 ---《高性能MySQL》读书笔记

    MySQL架构基础篇 MySQL逻辑架构 MySQL的缓冲池 存储引擎 InnoDB 锁 锁级别 死锁 事务 事务的ACID 事务的隔离级别 事务中混合使用存储引擎 binlog,redolog与un ...

  2. python进阶记录之基础篇二十六_Python进阶记录之基础篇(十六)

    回顾 在Python进阶记录之基础篇(十五)中,我们介绍了面向对象的基本概念以及Python中类和对象的基础知识,需要重点掌握类的创建和对象的使用.今天我们继续讲一下Python中面向对象的相关知识点 ...

  3. Python学习日记-day1基础篇 字符 输出 注释

    Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...

  4. 六种常见系统架构 —— 基础篇

    六种常见系统架构 -- 基础篇 常见的几种系统架构设计,本文先讲前三个: 1. 单库单应用架构:最简单的,可能大家都见过 2. 内容分发架构:目前用的比较多 3. 读写分离架构:对于大并发的查询.业务 ...

  5. 三层架构---理论篇

    What is it? 每当我们接触一个新名词,首先要问问自己"它是什么",这样才会有更强烈的好奇心与求知欲去弄明白它. 三层架构,由它的名字通俗易懂的理解就是三个层次的结构.那么 ...

  6. 微服务架构·基础篇,傻瓜看了都会

    转自:cyfonly 看到最近"微服务架构"这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习.而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和 ...

  7. python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍

    ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷.通过开发语言,可以制作ArcGIS ...

  8. python学习历程之----基础篇(五)

    去年今日此门中,人面桃花相映红. 人面不知何处去,桃花依旧笑春风. 老铁们,又到见面时间了,不知不觉,Python编程的基础篇已经四篇了,今天是第五篇,根据章节安排,最多再有三次基础文章,我们就会进入 ...

  9. 成小胖学习微服务架构·基础篇

    看到最近"微服务架构"这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习.而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究. ...

最新文章

  1. LiquidCrystal库函数
  2. CodeFx: 微软一站式开发技术框架解决方案 2009-7-30 新增sample code简介
  3. DATE_FORMAT(date,format)
  4. 软工实践练习一——使用Git进行代码管理心得
  5. 你觉得你有那些特质让你比别人更适合做产品经理?
  6. macos 下 vmware fusion 安装 vmware tools教程
  7. iPhone 12s Pro Max外观配置细节曝光:支持120Hz刷新率
  8. P3254 圆桌问题
  9. 论文阅读笔记(十一)——Mobilenet-SSDv2: An Improved Object Detection Model for Embedded Systems
  10. Visio2007画E-R图
  11. C#winform软件长时间运行后无响应问题解决
  12. OBLOG4.5 商业SQL版 漏洞解析
  13. java lang arithmetic_java.lang.ArithmeticException: Division undefined
  14. java 获取流 丢失_java文件流数据丢失问题
  15. 合成大西瓜?不如写个可以一起聊天吃瓜放烟花的聊天室
  16. 【风变编程】第五课笔记
  17. GNS3-1.3.10的安装及配置
  18. 直接插入排序:监视哨的作用
  19. Qt操作SQLite数据库——创建、打开、关闭、增加、删除和修改操作
  20. opencv C艹:读取视频文件,保存图像,视频文件,读取保存XML YAML文件

热门文章

  1. 自同步如果服务器删掉文件,Linux之rsync简单应用rsync+inotify实时应用
  2. Ubuntu16.04.6LTS的安装
  3. 独家!144家智慧城市上市企业2020年市值、募资排行榜!
  4. 如何撰写一篇学术论文
  5. php图片转位图,图像必须是什么模式才可以转换为位图模式?
  6. sg90型360度舵机的控制方法
  7. Activiti工作流之流程分支
  8. 自定义控件知识储备-LayoutParams的那些事
  9. 伤感唯美语录_离去,让事情变得简单
  10. 二胡名曲《睡莲》二胡谱