Python web 框架:web.py 【数据库】
时间:2020-05-25
本文章向大家介绍Python web 框架:web.py 【数据库】 ,主要包括Python web 框架:web.py 【数据库】 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
数据库
Web.py 更多关于数据库的操作:http://webpy.org/cookbook/index.zh-cn
注意:在你开始连接数据库之前,请先安装正确的数据库驱动。比如 MySQLdb、psycopg2。如果需要尝试连接 池(database pool)功能,还得装下DBUtils。这几个模块都可以通过easy_install 或者 pip 来安装。
连接数据库:
1 import web 2 db = web.database(dbn='postgres', db='mydata', user='dbuser', pw='')
操作 数据库 示例
select 查询 # 查询表 entries = db.select('mytable') # where 条件 myvar = dict(name="Bob") results = db.select('mytable', myvar, where="name = $name") results = db.select('mytable', where="id>100") # 查询具体列 results = db.select('mytable', what="id,name") # order by results = db.select('mytable', order="post_date DESC") # group results = db.select('mytable', group="color") # limit results = db.select('mytable', limit=10) # offset results = db.select('mytable', offset=10) 更新 db.update('mytable', where="id = 10", value1 = "foo") 删除 db.delete('mytable', where="id=10") 复杂查询 # count results = db.query("SELECT COUNT(*) AS total_users FROM users") print results[0].total_users # join results = db.query("SELECT * FROM entries JOIN users WHERE entries.author_id = users.id") # 防止SQL注入可以这么干 results = db.query("SELECT * FROM users WHERE id=$id", vars={'id':10}) 多数据库操作 (web.py大于0.3) db1 = web.database(dbn='mysql', db='dbname1', user='foo') db2 = web.database(dbn='mysql', db='dbname2', user='foo') print db1.select('foo', where='id=1') print db2.select('bar', where='id=5') 事务 t = db.transaction() try: db.insert('person', name='foo') db.insert('person', name='bar') except: t.rollback() raise else: t.commit() # Python 2.5+ 可以用with from __future__ import with_statement with db.transaction(): db.insert('person', name='foo') db.insert('person', name='bar')
现在,在数据库里创建一个简单的表:
CREATE TABLE todo ( id serial primary key, title text, created timestamp default now(), done boolean default 'f' ); /* 初始化一行 */ INSERT INTO todo (title) VALUES ('Learn web.py');
回到 code.py,修改GET 方法如下:
1 def GET(self): 2 todos = db.select('todo') 3 print render.index(todos)
修改urls 变量:
1 urls = ( 2 '/', 'index')
重新编辑index.html 文件如下:
1 $def with (todos) 2 <ul> 3 $for todo in todos: 4 <li id="t$todo.id">$todo.title</li> 5 </ul>
现在,可以访问”/“,如果显示”Learn web.py“,则祝贺你成功了!
现在,再让我们看看如何向数据库写入。
在index.html 文件的尾部添加如下内容:
1 <form method="post" action="add"> 2 <p> 3 <input type="text" name="title" /> 4 <input type="submit" value="Add" /> 5 </p> 6 </form>
修改code.py 文件的urls 变量如下:
1 urls = ( 2 '/', 'index', 3 '/add', 'add' 4 )
在code.py 里添加一个类:
1 class add: 2 def POST(self): 3 i = web.input() 4 n = db.insert('todo', title=i.title) 5 web.seeother('/')
web.input 使你能够方便地访问用户通过表单提交上来的变量。db.insert 用于向数据库的 “todo” 表插入数据,并且返回新插入行的ID。web.seeother 用于重转向到”/“。
提示:对于数据库的操作,还有db.transact(), db.commit(), db.rollback(),db.update()。
在web.py 里,还有web.input,web.query 和其它的函数,返回”Storage objects”,可以像字典型类(dictionaries) 的使用。
原文地址:https://www.cnblogs.com/chidao/p/12958070.html
- Spark你一定学得会(一)No.7
- iOS 滚动视图的复用问题解决方案
- 二叉排序树(BSTree)关于查找算法结合
- 使用ES6新特性开发微信小程序(5)——内建对象的变化
- 弗洛伊德(Floyd)算法
- 迪杰斯特拉(Dijkstra)算法求图中最短路径
- 微信小程序实例-摇一摇抽奖
- 普利姆(prim)算法和克鲁斯卡尔(kruskal)算法
- android Handler机制之ThreadLocal详解
- 图(Graph)的常用代码集合
- 我差不多,哦不我已经是个废人了No.4
- 将Gradle项目发布到Jcenter和Maven Central
- FLAnimatedImage -ios gif图片加载框架介绍
- linux学习第八篇:文件或目录权限chmod,更改所有者和所属组chown,umask,隐藏权限lsattr_chattr
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 天气APP(二十五)地图天气(下)嵌套滑动布局渲染天气数据
- Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)
- Android 天气APP(二十七)增加地图天气的逐小时天气、太阳和月亮数据
- Android 天气APP(二十八)地图搜索定位
- DevEco Studio项目构建讲解、编写页面、布局介绍、页面跳转
- Android 天气APP(二十九)壁纸设置、图片查看、图片保存
- Chrome 私人珍藏-stylus插件实现个性化百度界面定制
- Python 基础篇-简单的异常捕获
- Python 技巧篇-让我的程序暂停一下
- Python+selenium 技术篇-浏览器后台运行
- Python 基础篇-python3安装pyHook和pywin32库
- 漫画:如何螺旋遍历二维数组?(修订版)
- 一文快速入门分库分表(必修课)
- 写出漂亮 Python 代码的 20条准则
- 简单red5+obs推流实现直播系统开发,具体设置介绍