问题
设想这样的流程,web项目启动时,数据库需要在那里
那么便涉及到初始化db的问题
我自己设想:
在models.py中建立initdb()
app.py加载initdb()
初始app.py时候顺便初始化db(具体地, 放在Application.__init__中)
问题在于:
models.py中怎么写? (我设想了一种写法, 见代码1)
init_db.py中怎么写? (见代码2)
相关代码
项目结构
+---docs +---scripts +---tests +---urlshortener +---db/ models models.py 所有表定义 +---handlers/ routers +---templates/ +---utils/ app.py 入口
代码1 (/db/models.py)
from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base engine = create_engine('mysqlXXXXX') Session = sessionmaker(bind=engine) session = Session() Base = declarative_base() class User(Base): __tablename__ = 'user' ... ... ... def initdb(): Base.metadata.create_all(engine)
代码2 (app.py)
from db.models import initdb class App(tornado.web.Application): def __init__(self): ... ... initdb() ... ...
上下文环境
SQLAlchemy
tornado
尝试解决
tornado 难道没有公开的SQLAlchemy集成方案?你还是转flask吧。什么异步追求效率。到真正效率瓶颈再说吧