Python+SQLAlchemy+MySQLでORマッピング
「Python+SQLAlchemy+MySQLでDB接続」ではSQLを直接記述して実行したが、今回はSQLを記述せずにDBアクセスを行う。
つまり、SQLAlchemyのORマッピング機能を使用して、SQLを書かずにSQLを実行する。
要点だけを記載したコードは次。
import sqlalchemy as dbMapper ・・・・・・・ url = 'mysql://ユーザ名:パスワード@IPアドレス/DB名' engine = dbMapper.create_engine(url, echo=True) # MetaData の生成 meta = MetaData() # MetaDataをエンジンに結びつける meta.bind = engine # SQLAlchemyのTableを使用して、データベースのテーブル定義からテーブルオブジェクトを作成する table_object = Table('テーブル名', meta, autoload=True) # selectの実行 rows = table_object.select().execute() # select実行結果の確認 for row in rows: print(row)
実行すると。文字化けwww。
(01, '????', '??')
(02, '????', '??')
DB側の文字コードがutf8なので、urlを記述する部分に次のように「?charset=utf8」を追記して文字コードを指定する。
url = 'mysql://ユーザ名:パスワード@IPアドレス/DB名?charset=utf8'
実行すると文字化けが修正された。
(01, 'ああああ', '愛知')
(02, 'いいいい', '東京')
下記2つのサイトを参考。
・本家のマニュアル
・SQLAlchemy 0.6.5 ドキュメント (和訳)