В Python, как мы могли бы написать SQL-запрос, который извлекает только определенные столбцы, доступные в списке? - PullRequest
0 голосов
/ 08 июля 2019

В настоящее время я извлекаю данные из SQL Server в Python с помощью следующего запроса:

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

Эта таблица содержит более 500 столбцов.У меня есть список из 100 столбцов, которые я хочу вытащить.

Как написать SQL-запрос на Python, который извлекает только те столбцы в списке?

1 Ответ

0 голосов
/ 08 июля 2019

Вы можете использовать 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]]]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...