pylons使用多个数据库(multiple DB)

最近作的工程要修改为两个数据库的,一个测试数据库, 一个线上数据库。mysql

因此就要把原来的只有一个数据库的改为两个数据库。sql

第一步:修改development.ini

# SQLAlchemy database URL
sqlalchemy.test.url = mysql://username:password@host:port/database
sqlalchemy.test.pool_recycle = 3600
sqlalchemy.online.url = mysql://username:password@host:port/database
sqlalchemy.online.pool_recycle = 3600

数据库

一个测试数据库,一个线上数据库session


第二步:修改config/envirment.py

# Setup the SQLAlchemy database engine
test_engine = engine_from_config(config, 'sqlalchemy.test.')
online_engine = engine_from_config(config, 'sqlalchemy.online.')
init_model(test_engine, online_engine)
app

第三步:修改model/meta.py

"""SQLAlchemy Metadata and Session object"""
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
__all__ = ['BaseTest', 'BaseOnline', 'Session']
# SQLAlchemy session manager. Updated by model.init_model()
Session = scoped_session(sessionmaker())

# The declarative Base
BaseTest = declarative_base()
BaseOnline = declarative_base()
测试

第四步:修改model/__init__.py

"""The application's model objects"""
from hello.model.meta import Session, BaseTest, BaseOnline

from hello.model.template_test import Template_test
from hello.model.template_online import Template_online

def init_model(test_engine, online_engine):
    """Call me before using any of the tables or classes in the model"""
    meta.BaseTest.metadata.bind = test_engine
    meta.BaseOnline.metadata.bind = online_engine

url

第五步:修改model/的多个表文件

from sqlalchemy import Column
from sqlalchemy import types
from hello.model.meta import BaseTest
class Template_test(BaseTest):
    __tablename__ = "template"
spa

第六步:修改controller

根据model中表的状况修改controller的文件头orm

from hello.model.template_test import Template_test
sqlalchemy

大功告成!
相关文章
相关标签/搜索