使用sqlalchemy生成:SELECT * ... INTO OUTFILE“file”;

时间:2011-05-21 17:57:51

标签: mysql sqlalchemy into-outfile

我最近开始使用SQLALCHEMY来查询my-sql数据库。我想生成一个select语句,该语句使用“INTO OUTFILE <file>”语法将查询结果导出到测试文件。例如:

SELECT *
FROM table
INTO OUTFILE '/tmp/export.txt';

有没有办法使用SQLALCHEMY生成“INTO OUTFILE...”子句?

如果没有,我可以将其中一个SQLALCHEMY类子类化,以便我自己构建该子句吗?

感谢。

1 个答案:

答案 0 :(得分:3)

我做了一些思考,并在SQLAlchemy网站上的示例中找到了解决方法。 (也发布到sql-alchemy user reciptes


from sqlalchemy import *
from sqlalchemy.sql.expression import Executable, ClauseElement
from sqlalchemy.ext import compiler

class SelectIntoOutfile(Executable, ClauseElement):
    def __init__(self, select, file):
        self.select = select
        self.file = file


@compiler.compiles(SelectIntoOutfile)
def compile(element, compiler, **kw):
    return "%s INTO OUTFILE '%s'" % (
        compiler.process(element.select), element.file
    )


e = SelectIntoOutfile(select([s.dim_date_table]).where(s.dim_date_table.c.Year==2009), '/tmp/test.txt')
print e
eng.execute(e)