使用SQLAlchemy+tornado的项目,如何初始化数据库?
高洛峰
高洛峰 2016-11-02 13:04:08
0
1
674

问题

设想这样的流程,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

尝试解决


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(1)
三叔

tornado 难道没有公开的SQLAlchemy集成方案?你还是转flask吧。什么异步追求效率。到真正效率瓶颈再说吧

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal