跬步 On Coding

WSGI 理解

参考

WSGI 简介

WSGI是Python webserver与Web App之间的协议。这个协议定义了Web server和App的行为,是的server与app分离,简化了开发。

WSGI server,Gunicorn(python实现),uWSGI(C实现),这些服务器程序都实现了标准的WSGI接口,任意web app都可以使用不同的server。

urllib2 使用

基础用法

urllib2是用来发送http请求,获取响应数据的库。基础用法:

import urllib2

# urlopen返回类文件对象,可选参数data与请求头header
response = urllib2.urlopen('http://bozpy.sinaapp.com', [data, [header]])
body = response.read() # 类文件对象有与文件对象类似的方法,read,readline等
heade = response.info() # 获取响应的头,字典
url = response.geturl() # 获取响应的真实url,如果有重定向,url会改变

ORM 对象关系映射

ORM概念

wikipedia: 对象关系映射

简单的说ORM就是通过操作Python中的对象来实现对关系数据库(MySQL)中数据的操作。Model类与数据库表映射,Model对象与数据库中的行映射,对象的属性与表中的字段映射。

用Python实现基本功能的ORM

首先定义Field类,代表DB中tabale的每一个字段,对象初始化的时候需要定义的属性有,字段名称,字段数据类型,是否为主键,是否可为空,字段默认值,是否可更改等字段属性

Python 中的元类

参考

深刻理解Python中的元类(metaclass)

类与类的创建

Python中的class也是object,所以类可以作为参数,作为函数返回值,作为对象获取属性。

class MyClass(object):
    pass

myObject = MyClass()

type(myObject) # 获取对象的类
# <class '__main__.MyClass'>

type(MyClass) # 所有的类都是type类的对象
# <type 'type'>

myObject.__class__ # 获取对象的类
# <class '__main__.MyClass'>

MyClass.__class__
# <type 'type'>

Python 使用 MySQL

MySQLdb基本使用方式

import MySQLdb

# 建立MySQL连接
connect = MySQL.connect(user=user, passwd=passwd, db=db, host=host, port=port)
cursor = connect.cursor() # 生成游标对象

try:
    cursor.execute('SQL %s', args) # 游标对象执行SQL语句,语句中有%s,则用args替换

    # 执行SELECT语句通过以下方法可获取到查询结果
    result = cursor.fetchall() # 结果为列表,列表每一项代表查询的一row,每行都是一个列表,列表顺序按照SELECT的字段顺序排序
    result = cursor.fetchone() # 获取查询到结果的第一行数据,返回列表,再次运行获取下一条

    cursor.description # 查询到字段定义信息

    [x[0] for x in cursor.description] # 序列的第一个值为字段名称

    # 执行INSERT DELETE操作获取受影响的行数
    r = cursor.rowcount

    # 获取INSERT行的主键值,一般是id
    id = cursor.lastrowid

    connect.commit() # 游标对象执行语句是以事务方式执行,所以需要提交
except: # 如果提交失败
    connect.rollback() # 回滚事务
finnally:
    # 最后关闭游标,连接
    cursor.close()
    connect.close()