LoginSignup
4
4

More than 5 years have passed since last update.

Elixirで直接SQLを書いて実行する

Posted at

PythonのORMの一種であるElixirを使っているとき、直接SQLを書く必要に迫られた時の方法を残します。

※ここではORMを使っているのに直接SQLを書く時の是非は議論しません。

コード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from elixir import *

days = 10

metadata.bind = "mysql://userid:password@127.0.0.1/test"
setup_all()

sql   = """ 
SELECT DATE_FORMAT( NOW() - INTERVAL %(days)s DAY, '%%Y-%%m-%%d' ) date,
       DATE_FORMAT( NOW(), '%%Y-%%m-%%d' ) today
  FROM DUAL
"""
conn   = metadata.bind.engine.connect()
result = conn.execute( sql, { "days": days } ) 

for row in result:
    print "%sの%d日前: %s" % ( row.today, days, row.date )

実行結果は次の通り。

2014-04-18の10日前: 2014-04-08

補足

実態は、ElixirがラップしているSQLAlchemyのAPIを叩いていることになります。

一昔前のプレースホルダーを使ったSQLの実行方法を知っていると、使いやすいかも知れません。

参考資料

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4