Flask-SQLALchemy で multi-database をつかったのが動かない
Flask-SQLAlchemy を試してみるかと思って以下のようなのを書いた。
#!/usr/bin/env python # -*- coding: utf-8 -*- "" from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///master.db' app.config['SQLALCHEMY_BINDS'] = { 'slave': 'sqlite:///slave.db' } app.config['SQLALCHEMY_ECHO'] = True db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) def __init__(self, username, email): self.username = username self.email = email def __repr__(self): return '<User %r>' % self.username def create_db(): with app.app_context(): db.create_all() @app.route('/') def index(): return 'hello' @app.route('/add') def add(): foo = User('foo', 'foo@example.com') bar = User('bar', 'bar@example.com') db.session.add_all([foo, bar]) db.session.commit() return 'Success' if __name__ == '__main__': app.run(debug=True)
初期のテーブルを作ろうと以下のコマンドをたたいた。
>>> import app
>>> app.create_db()
master.db と slave.db が同一ディレクトリに作成された。
が、slave.db の中身をみてもテーブルが作成されていない。
$ sqlite3 master.db SQLite version 3.8.0.2 2013-09-03 17:11:13 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables user sqlite> $ sqlite3 slave.db SQLite version 3.8.0.2 2013-09-03 17:11:13 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .tables sqlite>
なにこれ…。
ドキュメント読んだら出来そうな気がするんだけど…。