首页 > 解决方案 > 在 Python 中,我们如何编写只提取列表中可用的特定列的 sql 查询?

问题描述

目前,我正在使用以下查询从 Python 中的 SQL Server 中提取数据:

df = db.query("SELECT * FROM rpt_SalesHistoryMAST where GLPostDate>'2017-08-31' order by GLPostDate;")

该表由 500 多列组成。我有一个我想要提取的 100 列的列表。

我怎么能在 Python 中编写一个只提取列表中那些特定列的 sql 查询?

标签: pythonsql-serverpython-3.xjupyter-notebook

解决方案


您可以使用join以逗号分隔的分隔列名称构建字符串,然后将其格式化为您的 SQL 语句:

>>> column_names = ["first_name", "last_name", "email"]  # sample data
>>> column_string = ",".join(f"[{x}]" for x in column_names)
>>> column_string
'[first_name],[last_name],[email]'
>>> sql = f"SELECT {column_string} FROM [tablename] WHERE ..."
>>> sql
'SELECT [first_name],[last_name],[email] FROM [tablename] WHERE ...'

...或者,如果列名可能包含右方括号,则更加健壮:

>>> column_names = ["start time", "duration [minutes]"]
>>> column_string = ",".join(f"[{x.replace(']',']]')}]" for x in column_names)
>>> column_string
'[start time],[duration [minutes]]]'

推荐阅读