SQLAlchemy で 動的にデータベースを作成する方法
SQLAlchemy を使用して MySQL に動的にテーブルを作成する方法はググったら沢山出てきたが、動的にデータベースを作成するのはあんまりなかった。
# -*- coding: utf-8 -*- from sqlalchemy import create_engine def create_database(uri, schema): engine = create_engine(uri, pool_recycle=3600, encoding='utf-8') engine.connect().execute(schema) dbname = foo schema = 'CREATE DATABASE IF NOT EXISTS `%s` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;' % dbname user = 'dbusername' password = 'dbpassword' host = 'localhost' uri = 'mysql://%s:%s@%s' % (user, password, host) create_database(uri, schema)
一応これで、foo データベースは出来たけど、この方法であってるのかな…。
あと現在接続中のセッションから接続情報を取得するのは、以下のようにすればとれた。
scoped_session(sessionmaker(autoflush=True, autocommit=False, bind=engine)) session = Session() configs = session.connection().engine.url.translate_connect_args() dbi = session.connection().dialect.name