
Python
stonefisher
这个作者很懒,什么都没留下…
展开
-
理解Twisted的Deferred机制(二)使用inlineCallbacks实现类同步语法
上文提到使用deferred对象很容易陷入回调地狱中,好在python提供yield生成器语法,可以很容易就包装一套更加友好的异步编程API。就如同ES6提供的Promise等。目前在Twisted中提供了一个inlineCallbacks装饰器。能简化多Deferred操作,先上代码:from twisted.internet.defer import inlineCal原创 2016-06-20 09:27:27 · 9197 阅读 · 5 评论 -
理解Twisted的Deferred机制(一)
Twisted作为Python下的异步网络框架,在异步机制上与Nodejs很相像,但Twisted已经发展了十多年了。为了简化异步编程,Twisted引入了Deferred延迟对象的概念。Deferred是Twisted异步框架内部实现的一套callback调用的机制,或者可以说是一种设计模式。我们都知道jQuery也有一套Deferred机制,用来简化异步编程。Twisted原创 2016-06-20 09:15:13 · 5511 阅读 · 1 评论 -
理解SQLAlchemy的表继承关系(3)-Concrete Table Inheritance
Concrete Table Inheritance译成混合继承?这种继承方式会创建一个ORM基类,然后在所有继承表中会创建包含ORM基类定义的字段的独立的表。继承表与ORM基类的关系在数据库层面上没有外健关系,只是在语言层会有继承关系。class Employee(AbstractConcreteBase, Base): id =Column(Integer, pri原创 2015-12-09 11:45:43 · 4547 阅读 · 0 评论 -
理解SQLAlchemy的表继承关系(4)--高级应用
我们创建ORM的基类的目的除了提供公共字段和属性外,还可以实现更高级的功能。在stackoverflow上发现一个应用案例,在此转载一下。class Entry(AbstractConcreteBase, db.Model): """Base Class of Entry.""" id = db.Column(db.Integer, primary_key转载 2015-12-09 23:04:37 · 6786 阅读 · 0 评论 -
创建SQLAlchemy的ORM类的基类(二)
要为SQLAlchemy的ORM类的基类还有一种方法,就是利用继承的方法来配置。rom sqlalchemy.ext.declarative import declared_attrfrom sqlalchemy.ext.declarative import AbstractConcreteBaseengine = create_engine(...)Base = declarat原创 2015-12-09 22:51:19 · 6212 阅读 · 0 评论 -
理解SQLAlchemy的表继承关系(2)-Single Table Inheritance
Single Table Inheritance即单表继承,顾名思义,所有继承表的数据均保存在一个表。该种继承比较容易理解。class Employee(Base): __tablename__ = 'employee' id = Column(Integer, primary_key=True name = Column(String(50)) manager_d原创 2015-12-09 11:36:13 · 4809 阅读 · 0 评论 -
理解SQLAlchemy的表继承关系(1)--Joined Table Inheritance
Joined Table Inheritance指通过外健方式进行链接实现的继承方式。举个例子理解,共三个ORM类: Employee:员工,基类,具有id,name两个共有字段Manager:经理,继承Employee Engineer:工程师,继承Employee,在本例中,SQLAlchemy将会创建三个表,Employee,Manager,Engineerclass原创 2015-12-09 11:27:12 · 6233 阅读 · 0 评论 -
开源一个基于SQLAlchemy左右值存储的树组件
TreeModel for SQLAlchemy基于SQLAlcemy ORM库,利用左右值原理来实现树状存储的库。什么是左右值树存储原理可以问度娘。SATree可以在一张数据库表中存储多棵树,并可以方便地进行树的增加、删除、移动、输出等。树的一个节点在存储为一条记录,表现为SQLALchemy一个混合了TreeMixin的Model实例。项目地址:原创 2015-11-05 11:30:21 · 3623 阅读 · 0 评论 -
SQLAlchemy中设置Column的默认值
在使用SQLAlchemy时,如果主健使用uuid时import uuidid = db.Column(db.String(32), default=uuid.uuid4().hex, primary_key=True)上述写法,如果在进行批量增加时,会出现“主关健字重复”的错误正确的做法应该是def gen_id(): return uuid.原创 2015-09-12 23:44:17 · 10342 阅读 · 0 评论 -
python下取得父文件夹绝对路径的方法
我们知道在python下可以用以下代码:import oscurrent_path=os.path.dirname(__file__)取得父文件夹绝对路径的方法如下:os.path.abspath(os.path.dirname(__file__)+os.path.sep+"..")记录一下!原创 2015-09-09 17:04:55 · 8764 阅读 · 0 评论 -
比较现实可靠的python模块的安装部署方法
每一个pythoner都知识pip install,安装python模块实现是方便。当一个应用扩展十几二十个python模块时,网上最流行的方法是这样的:1、pip freeze > requirements.txt将包依赖信息保存在requirements.txt文件中。requirements.txt文件的内容大概是这样的:blinker==1.3Flask==原创 2015-03-26 23:25:38 · 6147 阅读 · 0 评论 -
使用Sublime Text搭建python调试环境
pycharm虽然用着爽,但经常原创 2014-08-14 16:39:04 · 124812 阅读 · 3 评论 -
实现Django的全文检索功能(一):选择Whoosh全文检索引擎
Django没有内置全文检索功能,这方面的资料也很少。有搜到两篇,一篇是使用在django应用上使用sphinx全文搜索还有一篇是使用Whoosh的,看这里其中whoosh是原生唯一的python写的全文搜索引擎,虽然有说whoosh性能比不上sphinx,xapian等。不过whoosh本身很小,安装后才2.61M,非常容易集成到django/python里面原创 2012-11-10 20:36:50 · 28063 阅读 · 7 评论 -
创建python单例实例的装饰器
环境:python 3.5单例模式网上有很多种方法,多少有一些问题,以下是我推荐的两种方法。方法一:使用metaclassclass Singleton(type): def __init__(self, *args, **kwargs): self.__instance = None super().__init__(*args, **kwargs)原创 2017-06-12 20:57:55 · 1868 阅读 · 0 评论