SqlAlchemy选择表达式数据类型

时间:2016-12-30 13:01:00

标签: sqlalchemy

使用SqlAlchemy我使用select public_factory来构建我的查询:

from sqlalchemy import select

table_cols = ['cat', 'dog', 'frog', 'date', 'name']
qry = select(table_cols)
conn = db.get_engine()
sql = "{}".format(
    qry.compile(
        conn, compile_kwargs={"literal_binds": True},),)

Cat,Dog和Frog是Float类型,数据是日期,名称是String类型。返回的qry表达式是

SELECT "cat", "dog", "frog", date, name

请注意,日期和名称是引用注释,我可以理解为什么日期不作为字符串返回但不确定为什么名称不是。

否则我可能会像这样使用一些黑客的痛处但不愿意:

def select_specific(table_name, column_list):
    sql = list()
    sql.append("SELECT ")
    for i, item in enumerate(column_list):
        if i == len(column_list)-1:
            sql.append("'{0}' ".format(item)) 
        else:
            sql.append("'{0}', ".format(item)) 
    sql.append("FROM {0}".format(table_name))
    sql.append(";")
    return "".join(sql)

关于如何使用处理任何类型列的sqlalchemy生成select语句的任何想法?

1 个答案:

答案 0 :(得分:-1)

我最终使用以下作为基础手动生成SQL:

http://code.activestate.com/recipes/577605-auto-generate-simple-sql-statements/