SqlAlchemy选择表达式数据类型

SqlAlchemy选择表达式数据类型,sqlalchemy,Sqlalchemy,使用SqlAlchemy,我使用select public_工厂构建我的查询,如下所示: 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

使用SqlAlchemy,我使用select public_工厂构建我的查询,如下所示:

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类型,数据是date,名称是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语句,您有什么想法吗?

我最终使用手动生成SQL,并以以下内容为基础: