SQLAlchemyでMySQLに接続
SQLAlchemyからMySQLに接続してみたらちょっとハマった。
まず以下のエラーが出たので、mysql-pythonを入れてMySQLdbを使えるようにする。
ImportError: No module named MySQLdb $ easy_install mysql-python
すると、エラーになってしまい、mysql-pythonを入れることができない。
ちょっと調べた結果、mysql-develが入ってないと上記のエラーになるということわかった。当方macを使用しているのでhomebrewでmysqlを入れてみる。
$ brew install mysql
この状態でeasy_installを再度実行し、mysql-pythonをダウンロードすることができた。
上記の問題を解決したら後は楽ちん。
こんな感じで、sqliteにつなぐのとほとんど変わらない感覚でmysqlに接続できた。
#!/usr/bin/env python #-*- coding: utf-8 -*- from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base import sys import datetime DATABASE = 'mysql://<ユーザ名>:<パスワード>@<ip>/<db名>' metadata = MetaData() #setup sqlalchemy engine = create_engine(DATABASE, encoding='utf-8') db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() #テーブルクラス class Book(Base): __tablename__ = 'Book' isbn = Column('isbn', Integer, primary_key=True) title = Column('title', String(200)) price = Column('price', Integer) publish = Column('publish', String(200)) published = Column('published', String(200)) def __init__(self, isbn, title, price, publish, published): self.isbn = isbn self.title = title self.price = price self.publish = publish self.published = published def __repr__(self): return 'Book' cur = db_session.query(Book).all()
参考URL:
http://omake.accense.com/static/doc-ja/sqlalchemy/ormtutorial.html#python
http://everydayprog.blogspot.jp/2011/04/sqlalchemymysql.html
http://memememomo.hatenablog.com/entry/2012/04/14/144842