Python 2.7 MSSQL Неверный синтаксис рядом с ордером

Я искал верх и низ, чтобы найти решение этой проблемы, я получаю сообщение об ошибке, когда добавляю Order by в утверждение:

(156, "Неверный синтаксис рядом с ключевым словом" Порядок ". Сообщение об ошибке DB-Lib 20018, серьезность 15:\n Общая ошибка SQL Server: проверка сообщений от SQL Server\n")

Код в моем.py файле:

db = pymssql.connect(server='DESKTOP-3G1FB9B\SQLEXPRESS', user='sa', password='', database='Osmium')
cursor = db.cursor()
sql = "(SELECT TOP 1 * FROM delayed Order by ID ASC)"
cursor.execute(sql)

Если я удаляю "Заказ по идентификатору ASC", он выполняется нормально, но мне нужно упорядочить результаты и я не могу найти решение. Ввод запроса в SQL Server 2014 Management Studio и добавление "Osmium.dbo.delayed" возвращает правильный результат, мне просто нужно, чтобы он работал в скрипте Python (2.7)

SELECT TOP 1 * FROM Osmium.dbo.delayed Order by ID ASC

2 ответа

Решение

Отправляя это, чтобы ответить, и объясните, почему:

Измени свой sql объявление переменной должно быть:

sql = "SELECT TOP 1 * FROM [delayed] ORDER BY [ID] ASC"

ORDER BY - это предложение в T-SQL, и поэтому ему не нужны круглые скобки для определения порядка операций. Квадратные скобки можно использовать для окружения определенных объектов в SQL Server, чтобы разрешить использование зарезервированных слов (например, если у вас есть столбец с именем, например, [file]), или определенных символов, таких как дефис (база данных с именем [your-db). ]).

Это сработало для меня. когда я дал разрешение на обновление.

Другие вопросы по тегам