Pycharm建立web2py项目并简单连接MySQL数据库
引言

web2py是一种免费的,开源的web开发框架,用于敏捷地开发安全的,数据库驱动的web应用;web2p采用Python语言编写,并且可以使用Python编程。web2py是一个完整的堆栈框架,也就是说她包含了开发完整功能的web应用所需的所有组件。

web2py被设计来指导web开发人员遵循良好的软件工程实践,如使用模型(Model),视图(View),控制器(Controller)MVC模式。web2py将数据表达(the model)从数据表示(the view)和应用逻辑及工作流(the controller)中分开。web2py提供的库可以帮助开发者分别设计,实施和测试MVC中的每一部分,并能使它们一起工作。

web2py是为了安全而构建的。这意味着遵循成熟的方法,他能自动处理很多可能导致安全漏洞的问题。例如web2py验证所有输入(防止注入攻击),转义所有输出(防止跨站点脚本攻击),重命名上传文件(防止目录遍历攻击)。在与安全有关的方面,web2py没有留给应用程序开发人员选择的余地。

web2py中包含数据库抽象层(DAL),它能够动态写入SQL[sql:w] ,因此开发人员不需要自己写。DAL知道如何透明地生成支持SQLite[sqlite] ,MySQL[mysql] ,PostgreSQL[postgres] ,MSSQL[mssql] ,FireBird[firebird] , Oracle[oracle] ,IBM DB2[db2] ,Informix[informix] 以及Ingres[ingresdb] 的SQL语句。当在谷歌App Engine (GAE)[gae]上运行时,DAL也能生成函数调用Google Datastore。实验时,我们支持更多的数据库。请查看web2py网站和邮件列表,获取最新的支持。一旦有一个或多个数据库表被定义,web2py也能生成一个全功能的基于web的数据库管理接口来访问数据库和表。

web2py与其它web框架的不同之处在于,它是唯一全面支持web2.0范例的框架,在这里web就是计算机。实际上,web2py不需要安装或配置,它能在任何支持Python的体系结构(Windows,,Windows CE,Mac OS X,iOS ,Unix/Linux)上运行,应用程序的开发、部署和维护可以通过本地或远程web接口完成。web2py支持CPython(C语言实现)或Jython(Java语言实现),虽然官方声称仅支持2.5版本,但实际支持的版本包括2.4,2.5,2.6,2.7,这保证了应用程序的后向兼容性。

web2py提供了一个票据系统。如果出现错误,系统会发出一个票据给用户,并记录错误信息供管理员查看。

下面给出一些web2py语句的例子来展示它的功能和简洁性。代码如下:

db=DAL("mysql://root:Free-Wi11@10.0.20.252:3306/mybatis")
db.define_table('users',Field('id'),Field('name'),Field('age'),primarykey=['id'],migrate=False)
原则

Python编程通常遵循以下基本原则:

  • 不重复自己(DRY)。
  • 仅有一种实现方式。
  • 明确比含蓄更好。

在web2py中,通过强制开发者使用可靠成熟的软件工程实践,遏制代码重复,保证完全遵守前两条原则。web2py能指导开发者完成几乎所有web应用开发中的常见任务(创建和处理表单,管理会话,小甜饼“cookie”,错误等等)。

web2py对第3个原则的处理与其它框架有所不同,有时与前两个原则相冲突。尤其是web2py不会导入用户应用,而是在预定义的情况下执行。这会暴露Python和web2py关键字。

对某些人来说,这看起来就像魔术,但它不是这样的。简单地说,在实践中有些模块已经自动导入了,而不需要开发者导入。web2py试图避免其它框架下存在的令人讨厌的特征,即开发者需要在每个模型和控制器的顶部导入相同的模块。

web2py通过导入自有模块节约了时间,避免了错误,这遵循了不重复自己和仅有一种实现方式的精髓。

如果开发者想使用其它Python模块或第三方模块,这些模块必须明确导入,就像开发任何其它Python程序一样。

Web框架

在其最基本的层面上,web应用包含了一组程序(或者函数),当用户访问相应的URL时,该程序将被执行。同时,程序的输出返回给用户,并呈现在浏览器中。

web框架是为了让开发者更快,更简洁,无差错的开发新应用。它通过提供API和开发工具,以减少代码的编写量。

开发web应用的两个经典方法是:

  • 通过编程生成HTML代码
  • 将代码嵌入HTML页面中

早期的CGI脚本遵循第一种模型。下列脚本遵循第二种模型,例如PHP[php](代码用PHP编写,类似C语言)、ASP(代码用Visual Basic编写)以及JSP(代码用Java编写)脚本。

这里举一个PHP程序的例子,执行时,从数据库中获得数据,并返回一个显示选中记录的HTML页面。

<html><body><h1>Records</h1><?mysql_connect(localhost,username,password);@mysql_select_db(database) or die( "Unable to select database");$query="SELECT * FROM contacts";$result=mysql_query($query);mysql_close();$i=0;while ($i < mysql_numrows($result)) {$name=mysql_result($result,$i,"name");$phone=mysql_result($result,$i,"phone");echo "<b>$name</b><br>Phone:$phone<br /><br /><hr /><br />";$i++;}
?></body></html>
												

web2py基础教程(2)相关推荐

  1. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  2. [SQL基础教程] 1-5 表的删除和更新

    [SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...

  3. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  4. Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0

    Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...

  5. Python培训基础教程都教哪些

    根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...

  6. 深度学习之Pytorch基础教程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...

  7. python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...

    时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...

  8. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  9. python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类

    一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...

最新文章

  1. Flutter 导包 以及体验
  2. Java 性能优化的 45 个细节
  3. 关系数据库标准语言 SQL (ch.3)
  4. Struts2三种传参方式(从jsp页面传到Action)
  5. P1739 表达式括号匹配
  6. 简化Swagger使用的自制Starter:spring-boot-starter-swagger,欢迎使用和吐槽
  7. 第九章 单处理器调度
  8. PicoDet论文译读笔记
  9. hihoCoder 1378 网络流二·最大流最小割定理 (网络流学习#2 记录)
  10. java定长池,java线程池源码学习
  11. H3CTE讲师分享H3C认证培训实验9 IP基础
  12. php面试题目(中等水平)
  13. 个是云计算,一个大数据,一个人工智能,
  14. python输出字母金字塔a bb ccc dddd_《程序设计基础》题库(50道)
  15. 隐藏服务器header与web软件版本信息
  16. 不做etl sql 怎么直接取_不管茄子怎么做,直接下锅是大错!多加1步,茄子更入味,不变色...
  17. python_numpy_计算对数收益率和还原问题
  18. BERT模型—1.BERT模型架构
  19. Tensorflow-Caffe学习之路(一)Windows Anaconda3安装Caffe环境
  20. PostgreSQL+PostGIS实现两坐标点之间最短路径查询算法函数(地图工具篇.12)

热门文章

  1. Oracle笔记 之 分组统计排名函数dense_rank/rank()-over()函数
  2. hadoop搭建好后,页面访问不了
  3. Problem E: 质心算法
  4. 教师节浙大颁出百万大奖,国内编程教育引路人翁恺获殊荣
  5. 数字图像处理知识(空间滤波)
  6. 过度依赖Android国产手机厂商警惕重蹈DVD覆辙
  7. 福禄克FLUKE LinkIQ智能链路通(LIQ-100,LIQ-KIT)从开箱到设置、从陌生到熟悉
  8. 强大的 Postman --- API 管理工具
  9. 通俗易懂方差(Variance)和偏差(Bias)
  10. python如何检测是否按下ESC键