如何通过 Python 忽略 sql 列名?
How to ignore sql column names via Python?
我正在尝试通过 python 运行 sql 查询,但每次我删除最后两行代码时,我都会收到一个我不明白的错误 - The下面的代码是我正在尝试 运行,这些是我删除的代码行:
1 - columnNames = [n.replace('b','') for n in list(results.columns.values)]
2 - results.columns = columnNames
import pyodbc
import pandas
cnxn = pyodbc.connect("DSN=XXX",autocommit=True)
sql = "select b.* from X.Y a inner join X.X b where a.tradeid = b.tradeid where a.productmaintypeid = 'InterestRateCapFloor' limit 10"
results = pandas.read_sql(sql, cnxn)
错误信息
DatabaseError: Execution failed on sql 'select b.* from trade.trades a inner join trade.legs b where a.tradeid = b.tradeid where a.productmaintypeid = 'InterestRateCapFloor' limit 10': ('HY000', "[HY000] [Cloudera][Hardy] (80) Syntax or semantic analysis error thrown in server while executing query. Error message from server: Error while compiling statement: FAILED: ParseException line 1:83 missing EOF at 'where' near 'tradeid' (80) (SQLExecDirectW)")
将您的 SQL 查询更改为
select b.* from trade.trades a inner join trade.legs b where a.tradeid = b.tradeid AND a.productmaintypeid = 'InterestRateCapFloor' limit 10
基本上你需要删除多余的地方。
我正在尝试通过 python 运行 sql 查询,但每次我删除最后两行代码时,我都会收到一个我不明白的错误 - The下面的代码是我正在尝试 运行,这些是我删除的代码行:
1 - columnNames = [n.replace('b','') for n in list(results.columns.values)]
2 - results.columns = columnNames
import pyodbc
import pandas
cnxn = pyodbc.connect("DSN=XXX",autocommit=True)
sql = "select b.* from X.Y a inner join X.X b where a.tradeid = b.tradeid where a.productmaintypeid = 'InterestRateCapFloor' limit 10"
results = pandas.read_sql(sql, cnxn)
错误信息
DatabaseError: Execution failed on sql 'select b.* from trade.trades a inner join trade.legs b where a.tradeid = b.tradeid where a.productmaintypeid = 'InterestRateCapFloor' limit 10': ('HY000', "[HY000] [Cloudera][Hardy] (80) Syntax or semantic analysis error thrown in server while executing query. Error message from server: Error while compiling statement: FAILED: ParseException line 1:83 missing EOF at 'where' near 'tradeid' (80) (SQLExecDirectW)")
将您的 SQL 查询更改为
select b.* from trade.trades a inner join trade.legs b where a.tradeid = b.tradeid AND a.productmaintypeid = 'InterestRateCapFloor' limit 10
基本上你需要删除多余的地方。