web.py数据库操作方法指南 -《狗嗨默示录》-

1. 导入模块,定义数据库连接db

import web
db = web.database(dbn=‘postgres‘,  user=‘dbuser‘, pw=‘‘, db=‘mydata‘)

2. 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)

3. 更新

db.update(‘mytable‘, where="id = 10", value1 = "foo")

4. 删除

db.delete(‘mytable‘, where="id=10")

5. 复杂查询

# 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})

6 多数据库操作 (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=

7. 事务

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‘)
时间: 2024-10-06 15:34:31

web.py数据库操作方法指南 -《狗嗨默示录》-的相关文章

精简网络框架web.py学习笔记 -《狗嗨默示录》-

web.py 内置了web服务器,代码写完后,将其保存,例如文件名为mywebpy.py,可以用下面的方法来启动服务器: python mywebpy.py 打开你的浏览器输入 http://localhost:8080/ 查看页面. 若要制定另外的端口,使用 python mywebpy.py 1234. URL 处理 任何网站最重要的部分就是它的URL结构.你的URL并不仅仅只是访问者所能看到并且能发给朋友的.它还规定了你网站运行的心智模型.在一些类似del.icio.us的流行网站 , U

web.py搭建个人网址微信二维码后台开发 -《狗嗨默示录》-

建议在Python2.x版本食用 webapp.py #!/usr/bin/env python # -*- coding:UTF-8 -*- import web import qrcode from PIL import Image import datetime urls = ( '/','Index' # '/images/logo.png','Logo' #可放于静态文件夹static中 ) render = web.template.render('templates')#模板引擎

Scrapy指定顺序输出 -《狗嗨默示录》-

items.py import scrapy class CollectipsItem(scrapy.Item): IP = scrapy.Field() PORT = scrapy.Field() POSITION = scrapy.Field() TYPE = scrapy.Field() SPEED = scrapy.Field() CONNECT_TIME = scrapy.Field() SURVIVE_TIME = scrapy.Field() LAST_CHECK_TIME = s

MySQL使用手册 -《狗嗨默示录》-

1.创建数据库 CREATE DATABASE database dbname 2.删除数据库 drop database dbname 3.备份sql server -- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\Mysql\MyNwind_1.dat' -- 开始 备份 BACKUP DATABASE pubs TO testBack 4.创建新表 create table tabname(

使用http.cookiejar带cookie信息登录爬取方法 -《狗嗨默示录》-

Login.py # !/usr/bin/env python # -*- coding: utf-8 -*- import urllib.request import urllib.parse import user_info import http.cookiejar import re import time import socket cookie = http.cookiejar.CookieJar() #创建cookieJar保存cookie handler = urllib.req

Scrapy 爬取保险条款 -《狗嗨默示录》-

items.py class IachinaItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() COMPANY = scrapy.Field() TYPE = scrapy.Field() PRODUCT = scrapy.Field() CLAUSE = scrapy.Field() CLAUSE_URL = scrapy.Field() iachina.py # -*-

分布式爬虫基本原理 -《狗嗨默示录》-

分布式爬虫基本原理: 找一台高性能服务器,用于redis队列的维护以及数据的存储. 扩展scrapy程序,让其通过服务器的redis来获取start_urls,并改写pipeline里数据存储部分,把存储地址改为服务器地址. 在服务器上写一些生成url的脚本,并定期执行. 常见的防抓取屏蔽的方法: 设置download_delay,这个方法基本上属于万能的,理论上只要你的delay足够长,网站服务器都没办法判断你是正常浏览还是爬虫.但它带来的副作用也是显然的:大量降低爬取效率.因此这个我们可能需

jQuery hover() 方法 -《狗嗨默示录》-

jQuery hover() 方法 实例 当鼠标指针悬停在上面时,改变 <p> 元素的背景颜色: $("p").hover(function(){    $("p").css("background-color","yellow");},function(){    $("p").css("background-color","pink");}); 尝试一

爬取小说网站整站小说内容 -《狗嗨默示录》-

# !/usr/bin/env python # -*- coding: utf-8 -*- import urllib.request import re import MySQLdb import socket domain = 'http://www.quanshuwang.com' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Ch