嘿! 刚刚开始与Pylons一起使用SQLAlchemy,我的模型看起来像这样:
from sqlalchemy import Column
from sqlalchemy.types import Integer, String
from helloworld.model.meta import Base
class Person(Base):
__tablename__ = "person"
id = Column(Integer, primary_key=True)
name = Column(String(100))
email = Column(String(100))
def __init__(self, name='', email=''):
self.name = name
self.email = email
def __repr__(self):
return "<Person('%s')" % self.name
Run Code Online (Sandbox Code Playgroud)
为了避免sqlite重用可能已被删除的id,我想将AUTOINCREMENT添加到列"id".我查看了sqlalchemy的文档,看到可以发出sqlite_autoincrement.可以在此处找到给出此属性的示例.
sqlite_autoincrement似乎是在创建表本身时发出的,我只是想知道在使用模型的声明式样式时如何提供它.
我刚刚开始使用协同程序,并阅读了gevent和greenlets.对于测试,我通过gevents pywsgi模块提供了此代码:
from gevent.pywsgi import WSGIServer
import gevent
def hello_world(env, start_response):
gevent.sleep(5)
start_response('200 OK', [('Content-Type', 'text/html')])
return ["<b>hello world</b>"]
print 'Serving on 8088...'
WSGIServer(('127.0.0.1', 8888), hello_world).serve_forever()
Run Code Online (Sandbox Code Playgroud)
我期望一个结果,每个请求在显示文本之前会有5秒的延迟.然而,发生的是每个请求都通过调用gevent.sleep()排队等候,如果第二个请求在第一个请求之后立即启动,则会使第二个请求花费大约10秒.
serve_forever函数不是为每个请求生成新的greenlets吗?