Я пытаюсь запустить sql-запрос через python, но каждый раз, когда я удаляю две последние строки кода, я получаю сообщение об ошибке, которого я не понимаю - я пытаюсь запустить приведенный ниже код, и это строки кода. которые я стер:
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)")
Можем ли мы также увидеть ошибку? Может даже код? Попробуйте достать нам MCVE
и правильно отформатированный код :)
Я собираюсь добавить правильный код
DatabaseError: Выполнение не удалось на sql 'select b. * From trade.trades внутреннее соединение trade.legs b, где a.tradeid = b.tradeid, где a.productmaintypeid =' InterestRateCapFloor 'limit 10': ('HY000', "[HY000 ] [Cloudera] [Hardy] (80) Ошибка синтаксиса или семантического анализа на сервере при выполнении запроса Сообщение об ошибке от сервера: Ошибка при компиляции оператора: FAILED: строка ParseException 1:83 отсутствует EOF в 'where' near 'tradeid' ( 80) (SQLExecDirectW) ")
Приносим извинения за плохой код. Помогает ли приведенное выше сообщение об ошибке?
Конечно будет. Я добавил это к вопросу в редактировании. Я не эксперт по пандам, поэтому я бы подождал, пока кто-нибудь раскроет этот вопрос, и тогда они смогут больше помочь.
Вы говорите, что ошибка SQL возникает только тогда, когда вы добавляете две строки кода Python после в запрос sql?






Измените свой SQL-запрос на
select b.* from trade.trades a inner join trade.legs b where a.tradeid = b.tradeid AND a.productmaintypeid = 'InterestRateCapFloor' limit 10
по сути вам нужно удалить лишнее где.
Также проверьте, поддерживает ли ваша база данных ключевое слово limit.
Привет всем, большое спасибо за вашу помощь. Вы были правы, это была просто глупая ошибка sql, а не ошибка Python. отсортировано сейчас! с функцией замены или без нее
нам нужен минимальный воспроизводимый пример