Python для цикла выплевывает запрос, который является ошибкой - PullRequest
0 голосов
/ 06 ноября 2019

Привет, я читаю CSV-файл с пандами. я также создаю новый фрейм данных с полями, которые я хочу. поскольку я перебираю определенный столбец с командами sql, я получаю ошибки, указывающие, что конкретный запрос не может быть выполнен. вместо того, чтобы проходить через все команды sql в моем файле Excel, чтобы выяснить, что не работает, как я могу получить цикл for, чтобы также дать мне те, которые не работают вместо этого? потому что сейчас цикл for останавливается на первой полученной ошибке.

Анализ класса:

def read_sql(self):
    d1 = pd.read_csv('filename.csv')
    d2 = pd.dataframe(columns=[['ID', 'written_query', 'short_desc']])
    d2['ID'] = d1['analysis_id']
    d2['written_query'] = d1['query_syntax']
    d2['description'] = d1['short_desc']
    d2 = d2.to_json()
    conn = pyodbc.connet("driver, server, database, trusted_connection")
    for query in d1['query_syntax']:
        df = pd.read_sql(query, conn)
    return(df)

Я получаю ошибку pandas.io.sqlDatabaseError

Пример ошибки запроса выберите col2, col3, из t1

недопустимое имя столбца 'col2'

Я могу легко вернуться и исправить имя столбца, у меня просто 100 запросов, и я скорее получу список, который говорит мне, какие из них мне нужно вернуться и исправить, а не проходить черезвсе они по одной ошибке запроса за раз.

1 Ответ

1 голос
/ 06 ноября 2019
def read_sql(self):
    d1 = pd.read_csv('filename.csv')
    d2 = pd.dataframe(columns=[['ID', 'written_query', 'short_desc']])
    d2['ID'] = d1['analysis_id']
    d2['written_query'] = d1['query_syntax']
    d2['description'] = d1['short_desc']
    d2 = d2.to_json()
    conn = pyodbc.connet("driver, server, database, trusted_connection")
    keep_fails = []
    for query in d1['query_syntax']:
        try:
            df = pd.read_sql(query, conn)
        except:
            keep_fails.append(query)
    return(df, keep_fails)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...