Sep 16 2014
ORM概念
wikipedia: 对象关系映射
简单的说ORM就是通过操作Python中的对象来实现对关系数据库(MySQL)中数据的操作。Model
类与数据库表映射,Model
对象与数据库中的行映射,对象的属性与表中的字段映射。
用Python实现基本功能的ORM
首先定义Field
类,代表DB中tabale的每一个字段,对象初始化的时候需要定义的属性有,字段名称,字段数据类型,是否为主键,是否可为空,字段默认值,是否可更改等字段属性
Sep 15 2014
参考
深刻理解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'>
Sep 15 2014
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()
Sep 14 2014
参考
浅谈 Python 的 with 语句
概念
上下文管理器:
实现了__enter__()
与__exit__()
方法的类实例,运行时,先运行__enter__()
方法,再运行目标函数,无论是否抛出错误,都运行__exit__()
方法。
with语句可以方便的取代try:/except:
语句达到在运行函数前先构建环境,退出函数清理环境的目的。
Sep 13 2014
开源:https://github.com/zhu327/blog
Boz是一个用Python实现的轻量级Blog程序。
这是一个练习作品,开始于廖雪峰的Python教程实战篇。
感谢廖雪峰提供的教程,让我从这个程序中收获良多。
Blog现有2个分支:
- awesome:廖雪峰教程的标准实现
- master:: 部署在SAE(Sina App Engine)的版本