【问题标题】:python for loop spits out query that is in errorpython for循环吐出错误的查询
【发布时间】:2019-11-06 00:20:19
【问题描述】:

您好,我正在阅读带有熊猫的 csv 文件。我也在用我想要的字段创建一个新的数据框。当我使用 sql 命令遍历特定列时,出现错误,指出无法运行特定查询。而不是通过我的excel文件中的所有sql命令来找出哪些不起作用,我怎样才能让我的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, from t1

列名“col2”无效

我可以轻松返回并修复列名 我只有 100 个查询,我宁愿收到一个列表,告诉我哪些需要返回并修复,而不是一次遍历所有查询错误.

【问题讨论】:

  • 这实际上并没有运行查询,因为它循环通过它们它只是返回运行查询的列表以及失败的查询我将如何为成功的查询以及失败的列表。抱歉,不清楚

标签: python sql flask


【解决方案1】:
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)

【讨论】:

  • 值得注意的是:对于每个“查询”,您都将覆盖“df”。所以最终你得到的只是最后一次成功的查询,以及失败的列表。
  • 以及上面提到的@Aidan - 你也真的不想要一个裸露的except ......抓住最具体的错误,这样其他东西就不会被默默吞下,所以在这种情况下,它会是:except pd.io.sql.DatabaseError
猜你喜欢
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 2022-08-18
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多