さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

SQLAlchemyでMEDIUMTEXTやLONGTEXT、TINYINTを使う方法

皆さんSQLAlchemy使ってますか?

github.com

PythonのORマッパーといえば、SQLAlchemyと言われるくらいSQLAlchemyは利用されているライブラリです。 そんな中、マニュアル読んでざっくり使ってるだけだとMySQLでINTEGERやVARCHARは使えるんだけど、TINYINTやMEDIUMTEXTといった型はどうやって使えるんだろう?そんな事になったことはありませんか?
ちなみに僕は2年くらいその状態でした。

MEDIUMTEXTはともかくとして、TINYINTは結構使うことがあると思います。 以下のような使い方で使えるようです。

from sqlalchemy import *
from sqlalchemy.dialects.mysql import MEDIUMTEXT

feed_article_body = Table(
    'sample', meta,
    Column('id', Integer, primary_key=True, nullable=False),
    Column('name', String(255), nullable=False, index=True),
    Column('sampletext', MEDIUMTEXT, nullable=False),
    Column('created_at', DateTime, nullable=False, index=True),
    Column('updated_at', DateTime),
    mysql_row_format='DYNAMIC',
)

雑にコードを組んでみました。 どうやら、以下のようにMySQL専用の型クラスがいくつか定義されているようですね。

[https://github.com/zzzeek/sqlalchemy/blob/master/lib/sqlalchemy/dialects/mysql/init.py:title]

MEDIUMTEXTやTINYINTのほかにもいろいろ使えそうな型があるので是非使ってみてください。

SQLAlchemyは使いやすいマッパーなので是非使ってみてくださいね。