仿youku架构
数据库设计
管理员
注册
登录
上传视频
删除视频
发布公告
普通用户
注册
登录
充会员
查看视频
下载免费视频
下载收费视频
查看观影记录
查看公告
思路
class Field 表示数据表里的字段(字段属性:名字,类型,是否为主键,默认值) 类的对象————>数据库表的字段 class IntegerField(Field) 整型 class StringField(Field) 字符型 class ModelsMetaclass(type) 重写元类,让类创建之前,拦截它并重写__new__方法,name,bases,attrs, 循环attrs,进行更进一步判断操作 使attrs剔除掉原始初始化时赋予的属性值,且仅有table_name,primary_key,mappings def __new__ class Models(dict,metaclass=ModelsMetaclass) 如何在类进行实例化的时候,k=v,都能放进属性里 dict, 字典取值用的是中括号[],而我们需要的是用点(.) __getattr__ __setattr__ 根据类名查对象 注意防止SQL注入 # select * from %s where %s = ? % (cls.table_name,key) @classmethod select_one # select * from %s where % (cls.table_name) # select * from %s where %s = ? % (cls.table_name,key) @classmethod select_many 模拟session机制 服务端验证成功后,生成一个密文 客户端一旦断开,服务器保存的session状态清除掉 采用字典的pop方法 拼接字典 #live_user = {addr:[session,user_id],addr:[session,user_id],addr:[session,user_id]} live_user.pop(addr)
源码: