python - 在 Python 中,我们如何编写只提取列表中可用的特定列的 sql 查询?
问题描述
目前,我正在使用以下查询从 Python 中的 SQL Server 中提取数据:
df = db.query("SELECT * FROM rpt_SalesHistoryMAST where GLPostDate>'2017-08-31' order by GLPostDate;")
该表由 500 多列组成。我有一个我想要提取的 100 列的列表。
我怎么能在 Python 中编写一个只提取列表中那些特定列的 sql 查询?
解决方案
您可以使用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]]]'
推荐阅读
- google-cloud-platform - 在 GCP 上升级 postgresl/redis 数据库而不停机
- python - 如何根据值对矩阵中的行进行重新排序?
- bash - 已解决:Catalina bash shopt direxpand 丢失
- php - PHP - 遇到格式不正确的数值
- react-native - React Native 中的 Android 动态资产交付
- c++ - 我可以以这种方式为链表实现 push_back 方法吗?
- javascript - 数组分组转换键 start_section 到 end_section
- python - 如何将 pandas 数据框中的数字列与 NaN 结合起来?
- php - Wordpress 过滤自定义帖子类型分类
- android - 我们应该在购买成功后解锁应用内商品(onPurchasesUpdated),还是在确认成功后解锁(onAcknowledgePurchaseResponse)?