使用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语句的任何想法?
答案 0 :(得分:-1)
我最终使用以下作为基础手动生成SQL:
http://code.activestate.com/recipes/577605-auto-generate-simple-sql-statements/